summaryrefslogtreecommitdiffstats
path: root/examples/toplevel
diff options
context:
space:
mode:
Diffstat (limited to 'examples/toplevel')
-rw-r--r--examples/toplevel/main.cpp9
-rw-r--r--examples/toplevel/options.ui587
-rw-r--r--examples/toplevel/options.ui.h98
-rw-r--r--examples/toplevel/toplevel.doc132
-rw-r--r--examples/toplevel/toplevel.pro14
5 files changed, 840 insertions, 0 deletions
diff --git a/examples/toplevel/main.cpp b/examples/toplevel/main.cpp
new file mode 100644
index 0000000..f50b9b1
--- /dev/null
+++ b/examples/toplevel/main.cpp
@@ -0,0 +1,9 @@
+#include <qapplication.h>
+#include "options.h"
+
+int main( int argc, char ** argv )
+{
+ QApplication a( argc, argv );
+ OptionsDialog dlg;
+ return dlg.exec();
+}
diff --git a/examples/toplevel/options.ui b/examples/toplevel/options.ui
new file mode 100644
index 0000000..ef0573f
--- /dev/null
+++ b/examples/toplevel/options.ui
@@ -0,0 +1,587 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>OptionsDialog</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>OptionsDialog</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>371</width>
+ <height>482</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Select Options</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout5</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>bgBorder</cstring>
+ </property>
+ <property name="title">
+ <string>&amp;Border</string>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Select different types of borders, or turn the border off. Windows without a border are ignored by the window manager.</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>rbBorderNormal</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Normal</string>
+ </property>
+ <property name="accel">
+ <string>Alt+N</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A normal border</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Gives the window a normal, resizable border. The window should have a layout installed to handle the resizing gracefully.</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>rbBorderDialog</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Dialog</string>
+ </property>
+ <property name="accel">
+ <string>Alt+D</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A thin dialog border</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Gives the window a thin dialog border. Depending on the window manager the window will not be resizable. Use QWidget::setFixedSize() in addition to enforce a static size on all systems.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>bgTitle</cstring>
+ </property>
+ <property name="title">
+ <string>&amp;Titlebar</string>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Select different controls you want to see in the titlebar, or turn the titlebar off. Popup windows should not have a titlebar.</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbTitleSystem</cstring>
+ </property>
+ <property name="text">
+ <string>S&amp;ystem Menu</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Y</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A window system menu.</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Adds a window system menu. Many window managers require a system menu to be able to provide minimize or maximize controls. A system menu implies a close button.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbTitleMinimize</cstring>
+ </property>
+ <property name="text">
+ <string>Minimi&amp;ze</string>
+ </property>
+ <property name="accel">
+ <string>Alt+Z</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A minimize button</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Adds a minimze button. This option requires a system menu on many window managers.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbTitleMaximize</cstring>
+ </property>
+ <property name="text">
+ <string>Ma&amp;ximize</string>
+ </property>
+ <property name="accel">
+ <string>Alt+X</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A maximize button</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Adds a maximze button. This option requires a system menu on many window managers.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbTitleContext</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;What's This</string>
+ </property>
+ <property name="accel">
+ <string>Alt+W</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A context help button</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Adds a context help button. This option requires a system menu on many window managers, and often doesn't work together with minimize and maximize buttons.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout3</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>bgBehavior</cstring>
+ </property>
+ <property name="title">
+ <string>Behavior</string>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Select different behaviors of the window in runtime.</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbBehaviorTaskbar</cstring>
+ </property>
+ <property name="text">
+ <string>Taskbar &amp;Entry</string>
+ </property>
+ <property name="accel">
+ <string>Alt+E</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Entry in the taskbar</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Gives the window a separate task bar entry.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbBehaviorStays</cstring>
+ </property>
+ <property name="text">
+ <string>Stays on T&amp;op</string>
+ </property>
+ <property name="accel">
+ <string>Alt+O</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Stay on top of the desktop</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Informs the window system that the window should stay on top of all other windows, including windows from other applications. This is not supported on all X11 window managers.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbBehaviorPopup</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Popup</string>
+ </property>
+ <property name="accel">
+ <string>Alt+P</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A popup window</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Indicates that this widget is a popup window. Popup windows are modal, but close automatically when the mouse is clicked.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbBehaviorTool</cstring>
+ </property>
+ <property name="text">
+ <string>Too&amp;l</string>
+ </property>
+ <property name="accel">
+ <string>Alt+L</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>A tool window</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Makes the window a tool window. Tool windows often have a smaller titlebar and decoration, and don't activate automtically when displayed. Tool windows often cannot have their own taskbar entry.</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>cbBehaviorModal</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Modal</string>
+ </property>
+ <property name="accel">
+ <string>Alt+M</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Show modal</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>The window is modal for the application, e.g. input for other windows are blocked by this window.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>31</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>gbProperties</cstring>
+ </property>
+ <property name="title">
+ <string>Properties</string>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Set other properties of the window.</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLineEdit" row="0" column="1">
+ <property name="name">
+ <cstring>leCaption</cstring>
+ </property>
+ <property name="text">
+ <string>Caption</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Window caption</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>The caption of the window.</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="1">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>leIcon</cstring>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Icon file</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Provide an image file.</string>
+ </property>
+ </widget>
+ <widget class="QToolButton">
+ <property name="name">
+ <cstring>tbPick</cstring>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Pick an icon</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Select an image file.</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QSlider" row="2" column="1">
+ <property name="name">
+ <cstring>slTransparency</cstring>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="pageStep">
+ <number>10</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>10</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Window transparency</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Set the transparency of the window.
+A high value gives a high window transparency, e.g. it is less visible.
+
+Note that this attribute is not supported on many windowing systems and will have no effect.</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>textLabel3</cstring>
+ </property>
+ <property name="text">
+ <string>Transp&amp;arency:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>slTransparency</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>textLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Icon:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>leIcon</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Caption:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>leCaption</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>70</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>pbApply</cstring>
+ </property>
+ <property name="text">
+ <string>Apply</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Creates a new window with the selected flags, or modifies the visible window.</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>pbClose</cstring>
+ </property>
+ <property name="text">
+ <string>Close</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Closes this dialog and exits the application.</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>pbClose</sender>
+ <signal>clicked()</signal>
+ <receiver>OptionsDialog</receiver>
+ <slot>close()</slot>
+ </connection>
+ <connection>
+ <sender>pbApply</sender>
+ <signal>clicked()</signal>
+ <receiver>OptionsDialog</receiver>
+ <slot>apply()</slot>
+ </connection>
+ <connection>
+ <sender>bgBorder</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>bgTitle</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>cbTitleSystem</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>cbTitleMinimize</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>cbTitleSystem</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>cbTitleMaximize</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>cbTitleSystem</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>cbTitleContext</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>bgTitle</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>cbBehaviorPopup</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>cbBehaviorPopup</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>bgTitle</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>tbPick</sender>
+ <signal>clicked()</signal>
+ <receiver>OptionsDialog</receiver>
+ <slot>pickIcon()</slot>
+ </connection>
+</connections>
+<includes>
+ <include location="global" impldecl="in declaration">qguardedptr.h</include>
+ <include location="global" impldecl="in declaration">qvbox.h</include>
+ <include location="global" impldecl="in implementation">qfiledialog.h</include>
+</includes>
+<variables>
+ <variable access="private">QGuardedPtr&lt;QVBox&gt; widget;</variable>
+</variables>
+<slots>
+ <slot>apply()</slot>
+ <slot access="protected">pickIcon()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/examples/toplevel/options.ui.h b/examples/toplevel/options.ui.h
new file mode 100644
index 0000000..d6a499b
--- /dev/null
+++ b/examples/toplevel/options.ui.h
@@ -0,0 +1,98 @@
+void OptionsDialog::apply()
+{
+ QStringList flagList;
+ bool wstyle = false;
+ WFlags f = WDestructiveClose | WType_TopLevel | WStyle_Customize;
+
+ if ( bgBorder->isChecked() ) {
+ if ( rbBorderNormal->isChecked() ) {
+ f |= WStyle_NormalBorder;
+ flagList += "WStyle_NormalBorder";
+ wstyle = true;
+ }
+ else if ( rbBorderDialog->isChecked() ) {
+ f |= WStyle_DialogBorder;
+ flagList += "WStyle_DialogBorder";
+ wstyle = true;
+ }
+
+ if ( bgTitle->isChecked() ) {
+ f |= WStyle_Title;
+ flagList += "WStyle_Title";
+ wstyle = true;
+ if ( cbTitleSystem->isChecked() ) {
+ f |= WStyle_SysMenu;
+ flagList += "WStyle_SysMenu";
+ }
+ if ( cbTitleMinimize->isChecked() ) {
+ f |= WStyle_Minimize;
+ flagList += "WStyle_Minimize";
+ }
+ if ( cbTitleMaximize->isChecked() ) {
+ f |= WStyle_Maximize;
+ flagList += "WStyle_Maximize";
+ }
+ if ( cbTitleContext->isChecked() ) {
+ f |= WStyle_ContextHelp;
+ flagList += "WStyle_ContextHelp";
+ }
+ }
+ } else {
+ f |= WStyle_NoBorder;
+ flagList += "WStyle_NoBorder";
+ wstyle = true;
+ }
+
+ QWidget *parent = this;
+ if ( cbBehaviorTaskbar->isChecked() ) {
+ parent = 0;
+ f |= WGroupLeader;
+ flagList += "WGroupLeader";
+ }
+ if ( cbBehaviorStays->isChecked() ) {
+ f |= WStyle_StaysOnTop /*| WX11BypassWM*/;
+ flagList += "WStyle_StaysOnTop";
+ wstyle = true;
+ }
+ if ( cbBehaviorPopup->isChecked() ) {
+ f |= WType_Popup;
+ flagList += "WType_Popup";
+ }
+ if ( cbBehaviorModal->isChecked() ) {
+ f |= WShowModal;
+ flagList += "WShowModal";
+ }
+ if ( cbBehaviorTool->isChecked() ) {
+ f |= WStyle_Tool;
+ flagList += "WStyle_Tool";
+ wstyle = true;
+ }
+
+ if (wstyle)
+ flagList.push_front("WStyle_Customize");
+
+ if ( !widget ) {
+ widget = new QVBox( parent, 0, f );
+ widget->setMargin( 20 );
+ QLabel *label = new QLabel(flagList.join("&nbsp;| "), widget);
+ label->setTextFormat(RichText);
+ label->setAlignment(WordBreak);
+ QPushButton *okButton = new QPushButton( "Close", widget );
+ connect( okButton, SIGNAL(clicked()), widget, SLOT(close()) );
+ widget->move( pos() );
+ } else {
+ widget->reparent( parent, f, widget->geometry().topLeft(), FALSE);
+ }
+
+ widget->setCaption( leCaption->text() );
+ widget->setIcon( leIcon->text() );
+ widget->setWindowOpacity(double(slTransparency->maxValue() - slTransparency->value()) / 100);
+
+ widget->show();
+}
+
+void OptionsDialog::pickIcon()
+{
+ QString filename = QFileDialog::getOpenFileName( QString::null, QString::null, this );
+ leIcon->setText( filename );
+}
diff --git a/examples/toplevel/toplevel.doc b/examples/toplevel/toplevel.doc
new file mode 100644
index 0000000..4dbe1d9
--- /dev/null
+++ b/examples/toplevel/toplevel.doc
@@ -0,0 +1,132 @@
+/*!
+ \page toplevel-example.html
+
+ \ingroup examples
+ \title Toplevel Widgets
+
+ This example demonstrates the use of Qt's widget flags to provide
+ toplevel widgets with customized window decorations.
+
+ It provides a graphical user interface for selecting different
+ options for widget decoration and behavior, and passes the
+ appropriate widget flags to the QWidget constructor.
+ QWidget::reparent() is used to change the widget flags at runtime.
+
+ \warning Note that the interpretation and functionality of the
+ widget flags depends on the window manager used when running the
+ application. Many window managers do not support every possible flag
+ combination.
+
+ The user interface providing the different options was created using
+ \link designer-manual.book Qt Designer\endlink. The different
+ options are explained in the user interface through the use of
+ tooltips and What's This help. Load the \c options.ui file into
+ \link designer-manual.book Qt Designer\endlink for more details.
+
+ \quotefile toplevel/main.cpp
+ \printuntil }
+
+ The main function creates and displays the dialog for the user
+ interface. Note that this dialog is modal.
+
+ The code relevant for this example is in the \c options.ui.h
+ file.
+
+ \quotefile toplevel/options.ui.h
+ \printuntil WFlags
+
+ The \c apply() slot declares the widget flag variable \c f
+ and initializes it with the values
+ \list
+ \i \c WDestructiveClose - the widget will be automatically
+ destroyed when it is closed,
+ \i \c WType_TopLevel - the widget will be top level even if it
+ has a parent widget, and
+ \i \c WStyle_Customize - the flags override the default values
+ \endlist
+ Other flags are used depending on the options selected in the user
+ interface.
+
+ \printto bgTitle->isChecked()
+ The window gets a normal or dialog border depending on the selected
+ option.
+
+ \printto else
+ A titlebar with controls is provided if the appropriate options
+ have been checked.
+
+ \printto QWidget *parent
+ If the window should not have a border it cannot have a titlebar.
+ Widgets that provide their own (e.g. themed) window decoration
+ should use this flag.
+
+ \printto cbBehaviorStays
+ If a toplevel widget has a parent it will not have a taskbar
+ entry, and on most window managers it will always stay on
+ top of the parent widget. This is the standard behavior for
+ dialog boxes, especially if they are modeless, and for other
+ secondary toplevel widgets.
+
+ To provide a taskbar entry the widget must have no parent,
+ in which case we need to use the \c WGroupLeader flag to
+ prevent blocking through the modal main dialog. Applications
+ that can have multiple toplevel windows open simultaneously
+ should use this combination.
+
+ \printto cbBehaviorPopup
+ A toplevel widget can stay on top of the whole desktop if the
+ window manager supports this functionality.
+ \footnote Unfortunately some X11 window managers also require the \c
+ WX11BypassWM flag to be set in addition; but some other X11 window
+ managers will have problems if this flag is set. \endfootnote
+
+ Widgets that display important or realtime information (i.e. IRC
+ clients) might benefit from using that flag.
+
+ \printto cbBehaviorModal
+ A popup widget is a short lived modal widget that closes
+ automatically. Popup menus are a typical example for such widgets.
+
+ \printto cbBehaviorTool
+ A modal widget blocks input to other toplevel widgets, unless
+ those are in a different modal group (see \c WGroupLeader).
+ Dialogs are often modal, and the QDialog class provides an easy API
+ to create and display them without the need to explicitly use this
+ flag.
+
+ \printto !widget
+ A tool window will never have a task bar entry (even if it
+ has no parent widget), and often has a smaller window
+ decoration. Tool windows are frequently used instead of
+ modeless dialogs.
+
+ \printto else
+ The widget is created if it has not been created yet, or if it was
+ closed (since we use the \c WDestructiveClose flag). Note that the
+ window is not visible yet.
+ \footnote The example uses QGuardedPtr to make sure that the
+ pointer is reset to zero when the widget object is destroyed
+ due to the \c WDestructiveClose flag. \endfootnote
+
+ \printto setCaption
+ If the widget has already been created the reparent() function is
+ used to modify the widget's flags. The widget's geometry is not
+ changed, and the window is not shown again.
+
+ \printuntil show()
+ Finally the higher level properties such as the window's caption and
+ icon are set. The window transparency is set according to the slider
+ value. Note that this will only have effect on systems that support
+ this attribute for toplevel window.
+
+ \printuntil }
+ Finally the window is shown with the new attributes.
+
+ To build the example go to the toplevel directory
+ (\c QTDIR/examples/toplevel)
+ \footnote
+ We use \c QTDIR to stand for the directory where Qt is installed.
+ \endfootnote
+ and run \c qmake to generate the makefile, then use the make tool to
+ build the library.
+*/
diff --git a/examples/toplevel/toplevel.pro b/examples/toplevel/toplevel.pro
new file mode 100644
index 0000000..aad16ca
--- /dev/null
+++ b/examples/toplevel/toplevel.pro
@@ -0,0 +1,14 @@
+TEMPLATE = app
+LANGUAGE = C++
+
+CONFIG += qt warn_on release
+unix {
+ UI_DIR = .ui
+ MOC_DIR = .moc
+ OBJECTS_DIR = .obj
+}
+
+REQUIRES = full-config
+
+SOURCES += main.cpp
+FORMS = options.ui