Curriculum-block-for-Qt-Widgets-UI-advanced-certification: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
=Widget UI with Qt Exam Curriculum 021-001=
h1. Widget UI with Qt Exam Curriculum 021-001


This document defines the curriculum for Widget UI with Qt exam. Digia provides three kinds of Qt certification exams:
This document defines the curriculum for Widget UI with Qt exam. Digia provides three kinds of Qt certification exams:
Line 17: Line 17:
Widget UI with Qt will test your knowledge of Qt widget, model/view, and multi-thread programming. The exam contains a set of multiple choice questions and the candidate must select the correct statement(s).
Widget UI with Qt will test your knowledge of Qt widget, model/view, and multi-thread programming. The exam contains a set of multiple choice questions and the candidate must select the correct statement(s).


==Model/View==
== Model/View ==


* Know what the purpose of model/view programming is
* Know what the purpose of model/view programming is
Line 25: Line 25:
* Know what widgets Qt provides to display model data
* Know what widgets Qt provides to display model data


* Be able to use Qt’s predefined models
* Be able to use Qt's predefined models


* Know how to switch a view’s cell from read only to read/write
* Know how to switch a view's cell from read only to read/write


* Know why a view calls a model several times to render one single cell
* Know why a view calls a model several times to render one single cell
Line 37: Line 37:
* Know how to work with a selection
* Know how to work with a selection


* Know how the view recognizes the changes that have been made to the model’s data
* Know how the view recognizes the changes that have been made to the model's data


* Know what the purpose of a delegate is and how it can be used
* Know what the purpose of a delegate is and how it can be used


* Be able to sort and filter table data
* Be able to sort and filter table data  


==Multithreaded programming in Qt==
== Multithreaded programming in Qt ==


* Be able to start a new thread with QThread
* Be able to start a new thread with QThread
Line 59: Line 59:
* Know when a thread needs an event loop
* Know when a thread needs an event loop


* Know that you can use the native thread <span class="caps">API</span> and QThread in parallel
* Know that you can use the native thread API and QThread in parallel


* Know why queued connections are useful when working with threads
* Know why queued connections are useful when working with threads


* Know what the purpose of QtConcurrent functions are and how they can be used
* Know what the purpose of QtConcurrent functions are and how they can be used  


==Rich text processing==
== Rich text processing ==


* Familiarize yourself with QTextDocument , Qt’s class for representing formatted text
* Familiarize yourself with QTextDocument , Qt's class for representing formatted text  


* Be able to show formatted text using QTextEdit
* Be able to show formatted text using QTextEdit
Line 73: Line 73:
* Know how QTextFrame , QTextBlock and QTextFragment can be used to build up the hierarchy of formatted text
* Know how QTextFrame , QTextBlock and QTextFragment can be used to build up the hierarchy of formatted text


* Be able to build, modify and export formatted text (There is a hierarchical read only interface and a linear cursor interface for writing.)
* Be able to build, modify and export formatted text (There is a hierarchical read only interface and a linear cursor interface for writing.)  


==Manage Qt Projects (Develop / Unit Test / Port / License)==
== Manage Qt Projects (Develop / Unit Test / Port / License) ==


* <span class="caps">GPL</span>, <span class="caps">LGPL</span> or Commercial: which license should you choose?
* GPL, LGPL or Commercial: which license should you choose?


* Know how to write and compile a basic unit test
* Know how to write and compile a basic unit test


* Know that Qt can be used with other libraries like <span class="caps">STL</span>, boost, <span class="caps">ACE</span>
* Know that Qt can be used with other libraries like STL, boost, ACE


* Know how to organize the source tree of a large project
* Know how to organize the source tree of a large project


==Creating plugins==
== Creating plugins ==


* Know that Qt’s functionality can be extended by adding extensions
* Know that Qt's functionality can be extended by adding extensions


* Be able to load a dynamic library with QLibrary
* Be able to load a dynamic library with QLibrary
Line 93: Line 93:
* Know how to load an existing plugin * Know how to write a plugin
* Know how to load an existing plugin * Know how to write a plugin


==Drag/Drop and Clipboard access==
== Drag/Drop and Clipboard access ==


* Know the relevant event handlers for a drag and drop operation
* Know the relevant event handlers for a drag and drop operation
Line 111: Line 111:
* Be able to put data into the clipboard
* Be able to put data into the clipboard


==Custom Widgets==
== Custom Widgets ==


* Be able to develop a custom painted widget
* Be able to develop a custom painted widget
Line 121: Line 121:
* Subclass QWidget , Subclass QxxxWidget ?, Aggregate widgets
* Subclass QWidget , Subclass QxxxWidget ?, Aggregate widgets


==Styling widgets==
== Styling widgets ==


* Know how to set a stylesheet
* Know how to set a stylesheet
Line 137: Line 137:
* Know what the purpose of QStyleOption is * Know what the purpose of QPalette is
* Know what the purpose of QStyleOption is * Know what the purpose of QPalette is


==Making Applications Scriptable==
== Making Applications Scriptable ==


* Know that Qt Script is based on <span class="caps">ECMA</span> script, a standardized version of JavaScript
* Know that Qt Script is based on ECMA script, a standardized version of JavaScript


* Know that QScriptEngine is the class which is able to load and run Qt Script
* Know that QScriptEngine is the class which is able to load and run Qt Script


* Know that QScriptValue is a variant type accessible from C++ and Qt Script
* Know that QScriptValue is a variant type accessible from C++ and Qt Script  


* Be able to make a value of a custom C++ program accessible to Qt Script
* Be able to make a value of a custom C++ program accessible to Qt Script
Line 157: Line 157:
* Know how to check for script errors
* Know how to check for script errors


==Writing code for efficient Internationalization==
== Writing code for efficient Internationalization ==


* Know how a text constant containing non*Latin characters can be read into a QString
* Know how a text constant containing non*Latin characters can be read into a QString
Line 167: Line 167:
* Know how to take the encoding of the source file into account
* Know how to take the encoding of the source file into account


* Know how to use Qt Linguist to translate extracted strings
* Know how to use Qt Linguist to translate extracted strings  


* Be able to save the translated strings in a qm file
* Be able to save the translated strings in a qm file
Line 173: Line 173:
* Know how to find all string constants which are not marked for translation * Know how to use locale specific icons
* Know how to find all string constants which are not marked for translation * Know how to use locale specific icons


==Using the Undo Framework==
== Using the Undo Framework ==


* Know the architecture of the Qt undo framework
* Know the architecture of the Qt undo framework
Line 179: Line 179:
* Know how to combine commands with compression and macros
* Know how to combine commands with compression and macros


==Desktop integration==
== Desktop integration ==


* Be able to use the QDesktopWidget
* Be able to use the QDesktopWidget


* Know how to put an icon into the system tray
* Know how to put an icon into the system tray
* Know how to open an <span class="caps">URL</span> using the default browser

Revision as of 10:00, 24 February 2015

h1. Widget UI with Qt Exam Curriculum 021-001

This document defines the curriculum for Widget UI with Qt exam. Digia provides three kinds of Qt certification exams:

  • Qt Essentials
  • Widget UI with Qt
  • Core C++ for Qt Developers

If a candidate passes Qt Essentials exam, he or she will receive Digia Certified Qt Developer status and the corresponding certificate. If he or she additionally passes either or both of advanced exams (Widget UI with Qt or Core C++ for Qt Developers), the candidate will receive Digia Certified Qt Specialist status and the corresponding certificate. If a candidate has already taken two exams and passes the third one, he or she will receive another specialist certificate, where all three passed exams are listed. It is also possible to take an advanced exam before the essentials one, but the candidate does not receive any certificate in this case, until the essentials exam has been passed.

The exams are organized by authorized PearsonVUE test centers. Look at the details of test center locations in http://www.pearsonvue.com/digiaqt/ . To see the nearest test center of your location, use Exam Scheduling links at the bottom of the page.

Digia prints the certificates bi-weekly using a print house in Germany. After printing, the certificates are sent by mail to the exam candidates.

Widget UI with Qt will test your knowledge of Qt widget, model/view, and multi-thread programming. The exam contains a set of multiple choice questions and the candidate must select the correct statement(s).

Model/View

  • Know what the purpose of model/view programming is
  • Know how a view communicates with the model
  • Know what widgets Qt provides to display model data
  • Be able to use Qt's predefined models
  • Know how to switch a view's cell from read only to read/write
  • Know why a view calls a model several times to render one single cell
  • Know how to locate a specific item in a model
  • Know how to add a row to a table
  • Know how to work with a selection
  • Know how the view recognizes the changes that have been made to the model's data
  • Know what the purpose of a delegate is and how it can be used
  • Be able to sort and filter table data

Multithreaded programming in Qt

  • Be able to start a new thread with QThread
  • Know how to send messages to another thread
  • Know what it means for a method or a class to be threadsafe or reentrant
  • Know how to use a mutex
  • Know how to use a semaphore
  • Know what thread affinity of QObject means
  • Know when a thread needs an event loop
  • Know that you can use the native thread API and QThread in parallel
  • Know why queued connections are useful when working with threads
  • Know what the purpose of QtConcurrent functions are and how they can be used

Rich text processing

  • Familiarize yourself with QTextDocument , Qt's class for representing formatted text
  • Be able to show formatted text using QTextEdit
  • Know how QTextFrame , QTextBlock and QTextFragment can be used to build up the hierarchy of formatted text
  • Be able to build, modify and export formatted text (There is a hierarchical read only interface and a linear cursor interface for writing.)

Manage Qt Projects (Develop / Unit Test / Port / License)

  • GPL, LGPL or Commercial: which license should you choose?
  • Know how to write and compile a basic unit test
  • Know that Qt can be used with other libraries like STL, boost, ACE
  • Know how to organize the source tree of a large project

Creating plugins

  • Know that Qt's functionality can be extended by adding extensions
  • Be able to load a dynamic library with QLibrary
  • Know how to load an existing plugin * Know how to write a plugin

Drag/Drop and Clipboard access

  • Know the relevant event handlers for a drag and drop operation
  • Be able to accept data dropped from an external application
  • Be able to drag and drop data between two widgets in the same form
  • Know how to find out from which widget the dropped data comes
  • Be able to drag and drop custom data types
  • Know how to enable drag and drop for item views
  • Be able to access data stored in the clipboard
  • Be able to put data into the clipboard

Custom Widgets

  • Be able to develop a custom painted widget
  • Know how custom painted widgets can be made style aware
  • Be able to design custom widgets in different ways: aggregation, subclassing, custom painting
  • Subclass QWidget , Subclass QxxxWidget ?, Aggregate widgets

Styling widgets

  • Know how to set a stylesheet
  • Be able to specify a selector for a specific widget
  • Be able to set different style attributes like text background, padding and border
  • Be able to use Qt Designer for stylesheet development
  • Be able to set a style with a command line argument
  • Know how QStyle must be used in the body of paintEvent() to receive style compliant widgets
  • Know what the purpose of QStyleOption is * Know what the purpose of QPalette is

Making Applications Scriptable

  • Know that Qt Script is based on ECMA script, a standardized version of JavaScript
  • Know that QScriptEngine is the class which is able to load and run Qt Script
  • Know that QScriptValue is a variant type accessible from C++ and Qt Script
  • Be able to make a value of a custom C++ program accessible to Qt Script
  • Know how to call Qt Script functions from C++ and how to pass parameters
  • Know how to expose a QObject or a derivative to Qt Script
  • Know how to connect a signal to a Qt Script function
  • Know how to detect and handle Qt Script errors
  • Know how to check for script errors

Writing code for efficient Internationalization

  • Know how a text constant containing non*Latin characters can be read into a QString
  • Know how to wrap strings which need to be translated
  • Be able to extract strings to be translated from a Qt project
  • Know how to take the encoding of the source file into account
  • Know how to use Qt Linguist to translate extracted strings
  • Be able to save the translated strings in a qm file
  • Know how to find all string constants which are not marked for translation * Know how to use locale specific icons

Using the Undo Framework

  • Know the architecture of the Qt undo framework
  • Know how to combine commands with compression and macros

Desktop integration

  • Be able to use the QDesktopWidget
  • Know how to put an icon into the system tray