Qz Toolkit
Qz is a C++ toolkit add-on to the Qt cross-platform GUI application development toolkit from Trolltech (version 4.1 or later).
Qz version 4.1 contains two major components - an advanced message box replacement for QMessageBox called QzMsgBox, a dialog extension class QzDlg, plus many support classes. For a full listing of the classes in Qz click here. To view a gallery of example screenshots click here. A demonstration application, the demo browser, shows how to use many of Qz's features.
Additional widgets and extension components will be added to the Qz Toolkit shortly. If you would like to be kept informed as new features are released, contact us and ask to be added to the Qz interest mailing list.
A free download containing the reference documentation and a pre-built binary for the demo browser is available here.
As with the Qt toolkit, Qz provides single-source portability across Microsoft Windows, Mac OS X, Linux, and other platforms supported by Qt. Qz is formally supported (and tested) on Microsoft Windows (98 and up), Linux and Mac OS X (10.4). In practice you should find the code works on other platforms supported by Qt; it has been tested on various platforms and compilers without problem.
Qz is only released in a commercial edition: you must purchase relevant Qz licenses in order to use this toolkit. It is not licensed under any open source license, such as the GPL. Sorry! For the text of the license agreement click here.
QzMsgBox - Advanced Message Box
Screenshots
Click any image to enlarge. To view more samples, including source code, visit the gallery.

Don't Ask Again Checkbox

Question with 5 buttons

Question with Don't Ask Again Checkbox - Button Clicked is Remembered Between Application Runs

Input Dialog with Don't Ask Again Checkbox - Data Entered is Remembered Between Application Runs

Context Sensitive Help Buttons With Automatic Qt Assistant Linkage

Disabled Timeout - For Nag Messages

Default Button Timeout

Popups Without Buttons - Great For Forced Messages With Timeouts or 'Click Anywhere' to Dismiss


Background Images (Including Tiled)

User Definable Button Behaviour

Message Boxes with Custom Data Widgets with Don't Ask Again






Lots of ways To Customize Message Box Appearance |
QzMsgBox is a drop-in replacement to QMessageBox that adds many 'advanced' features leading edge applications have come to expect in message boxes. To see sample screenshots of many possible QzMsgBox message boxes, please see the Gallery.
Key features include:
- Source compatible with QMessageBox for client application code: QzMsgBox supports the same public interface as QMessageBox (plus a whole lot more) - so you can just change all your QMessageBox::information() calls to QzMsgBox::information() etc. and start benefitting from QzMsgBox's advanced features right away.
- Use any number of buttons.
- Customize the appearance of buttons e.g. buttons displayed vertically, multiple rows of buttons, hidden buttons, disabled buttons, user-supplied button subclasses, icons in buttons, colored button text and button backgrounds.
- Customize the behaviour of push buttons, such as 'quick shortcuts' that let the user dismiss (e.g.) a Yes/No message box with single keys Y or N without need for Alt-Y etc); the ability to set a specific keyboard shortcut for a button; button click sounds; what happens when a specific button is clicked, etc.
- Easily add 'Don't ask again' checkboxes with automatic persistence of state data (i.e., so your application can remember which message boxes are no longer required by the user - including between application instances).
- Source compatible with QInputDialog. QzMsgBox provides functions getText(), getItem(), getInteger() and getDouble() that are source compatible for client application code with the equivalent functions in QInputDialog, but can take advantage of new features such as use of 'Don't ask again' checkboxes, including persistence of the entered data value). E.g. you might use this in a database application to ask the user the login name to use. The user might not want to be asked this every time he starts the program, and would want it to both (i) not ask, and (ii) remember what he entered before.
- Specify screen position/size, together with position/size persistence, separately for different message box instances - so the user can position frequently displayed message boxes in specific screen positions and have them remember those positions.
- Provides a reporting mechanism (e.g. for reporting critical messages to a central helpdesk).
- Easily add help buttons with links to your application's help system.
- Play sounds/alerts when a message box is displayed. You can also set an 'alert timeout' which causes a message box to only generate an alertif the user does not respond to it within a given period. This is useful for messages requiring user action that are displayed during some long process in the application, when the user is likely to be away from the screen when the message box is displayed.
- Use modeless message boxes - e.g. 'information' style messages that do not temporarily halt the application.
- A 'more info' option to reveal a hidden 'detailed' message within the message box.
- Disabled timeouts - for 'nag' messages. i.e. message boxes that are initially disabled for a given period of time, during which the user just has to sit it out before dismissing the message.
- Default timeouts - to automatically dismiss a message box after a given timeout by simulating a default button click. Useful for 'information' style message boxes where it is not essential that the user sees the message, or for 'question' message boxes where the default choice can be safely assumed if the user doesn't happen to be in front of the computer at the time.
- Configurable escape button, including disabled escape mechanism.
- 'information'-style message boxes that can be closed by clicking anywhere on screen (useful for popup messages with default timeouts).
- Aswell as customizing the appearance of buttons there are many other ways to customize the visual appearance of message boxes, including: a means to change the way different message box elements are positioned relative to each other; framed groups of child widgets; separator lines between groups of widgets; use of background images; customization of fonts, colors, margins, spacings, etc.
- Designed from the ground up for extensibility e.g. to add custom widgets to a message box and have them positioned sensibly in relation to other message box elements.
- A powerful mechanism to pre-define multiple, named message box definitions (templates) for easy reuse throughout the application, including the ability to customize the definitions of standard message boxes (e.g. that used by QzMsgBox::information()).