summaryrefslogtreecommitdiffstats
path: root/doc/html/designer-manual-9.html
blob: fb23eda036af719f08c7fb7dd50cd83d0d87e229 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/espenr/tmp/qt-3.3.8-espenr-2499/qt-x11-free-3.3.8/tools/designer/book/chap-customizing.leaf:3 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Customizing and Integrating Qt Designer</title>
<style type="text/css"><!--
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
--></style>
</head>
<body>

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr bgcolor="#E5E5E5">
<td valign=center>
 <a href="index.html">
<font color="#004faf">Home</font></a>
 | <a href="classes.html">
<font color="#004faf">All&nbsp;Classes</font></a>
 | <a href="mainclasses.html">
<font color="#004faf">Main&nbsp;Classes</font></a>
 | <a href="annotated.html">
<font color="#004faf">Annotated</font></a>
 | <a href="groups.html">
<font color="#004faf">Grouped&nbsp;Classes</font></a>
 | <a href="functions.html">
<font color="#004faf">Functions</font></a>
</td>
<td align="right" valign="center"><img src="logo32.png" align="right" width="64" height="32" border="0"></td></tr></table><p align="right">[<a href="designer-manual-8.html">Prev: Creating Database Applications</a>] [<a href="designer-manual.html">Home</a>] [<a href="designer-manual-10.html">Next: Reference: Key Bindings</a>]</p>
<h2 align="center">Customizing and Integrating Qt Designer</h2>
<h3><a name="1"></a>Customizing Qt Designer</h3>
<p><em>Qt Designer</em> can be customized in two ways: you can add custom widgets, and you can change aspects of how <em>Qt Designer</em> works. Custom widgets are covered in <a href="designer-manual-7.html">Creating Custom Widgets</a>. This section will focus on customizing <em>Qt Designer</em> itself.</p>
<p><em>Qt Designer</em>'s toolbars are all dockable so they can be dragged by their toolbar handles and arranged how you like. The Files, Object Hierarchy, Property Editor and Output Windows are also dockable so you can also drag them to the positions that you prefer. You can also make them into floating windows by dragging them outside <em>Qt Designer</em>'s dock areas.</p>
<p>General preferences can be set by clicking <b>Edit|Preferences</b> to invoke the <em>Preferences</em> dialog. If you check the 'Restore Last Workspace on Startup' checkbox then <em>Qt Designer</em> will remember the sizes and positions of the toolbars and the dockable windows. You can change <em>Qt Designer</em>'s main window background either by selecting a color or a pixmap. You can also switch off the grid (uncheck Show Grid) since using layouts makes the grid redundant.</p>
<!-- index Plugins --><!-- index Code Editing!Preferences --><!-- index Preferences!Code Editing --><p>The <em>Preferences</em> dialog may have additional tabs, depending on what plugins you have installed. We'll describe the C++ Editor tab since this is installed by default.</p>
<p>The C++ Editor tab is used to set your preferred fonts for syntax highlighting in <em>Qt Designer</em>'s code editor. The base font for all elements is set in the 'Standard' element which is the last item in the list. If you want one font to be used throughout then set the 'Standard' font and all the other elements will inherit its setting.</p>
<h4><a name="1-1"></a>Qt Designer's Code Editor</h4>
<p>The code editor is available if an Editor plugin is installed. The C++ Editor plugin is installed by default.</p>
<!-- index Keypresses (Qt Designer's code editor) --><p>The code editor provides the following keystrokes:</p>
<ul><li><p>Left Arrow -- Moves the cursor one character left</p>
<li><p>Right Arrow -- Moves the cursor one character right</p>
<li><p>Up Arrow -- Moves the cursor one line up</p>
<li><p>Down Arrow -- Moves the cursor one line down</p>
<li><p>Page Up -- Moves the cursor one page up</p>
<li><p>Page Down -- Moves the cursor one page down</p>
<li><p>Backspace -- Deletes the character to the left of the cursor</p>
<li><p>Home -- Moves the cursor to the beginning of the line</p>
<li><p>End -- Moves the cursor to the end of the line</p>
<li><p>Delete -- Deletes the character to the right of the cursor</p>
<li><p>Ctrl+A -- Moves the cursor to the beginning of the line</p>
<li><p>Ctrl+B -- Moves the cursor one character left</p>
<li><p>Ctrl+C -- Copies the selected text to the clipboard (also Ctrl+Insert under Windows)</p>
<li><p>Ctrl+D -- Deletes the character to the right of the cursor</p>
<li><p>Ctrl+E -- Moves the cursor to the end of the line</p>
<li><p>Ctrl+F -- Invokes the <em>Find Text</em> dialog</p>
<li><p>Ctrl+G -- Invokes the <em>Goto Line</em> dialog</p>
<li><p>Ctrl+H -- Deletes the character to the left of the cursor</p>
<li><p>Ctrl+I -- Indent the line or selected text that contains the cursor</p>
<li><p>Alt+I -- Starts incremental search (see below)</p>
<li><p>Ctrl+K -- Deletes from the cursor position to the end of the line</p>
<li><p>Ctrl+N -- Moves the cursor one line down</p>
<li><p>Ctrl+P -- Moves the cursor one line up</p>
<li><p>Ctrl+R -- Invokes the <em>Replace Text</em> dialog</p>
<li><p>Ctrl+V -- Pastes the clipboard text into line edit (also Shift+Insert under Windows)</p>
<li><p>Ctrl+X -- Cuts the marked text, copy to clipboard (also Shift+Delete under Windows)</p>
<li><p>Ctrl+Y -- Redoes the last operation</p>
<li><p>Ctrl+Z -- Undoes the last operation</p>
<li><p>Ctrl+Left Arrow -- Moves the cursor one word left</p>
<li><p>Ctrl+Right Arrow -- Moves the cursor one word right</p>
<li><p>Ctrl+Up Arrow -- Moves the cursor one word up</p>
<li><p>Ctrl+Down Arrow -- Moves the cursor one word down</p>
<li><p>Ctrl+Home Arrow -- Moves the cursor to the beginning of the text</p>
<li><p>Ctrl+End Arrow -- Moves the cursor to the end of the text</p>
<li><p>Tab -- Completion (see below)</p>
</ul><p>To select (mark) text hold down the Shift key whilst pressing one of the movement keystrokes, for example, <b>Shift+Right Arrow</b> will select the character to the right, and <b>Shift+Ctrl+Right Arrow</b> will select the word to the right, etc.</p>
<p>Pressing <b>Alt+I</b> starts incremental search. The characters you type will appear in the Incremental Search line edit in the Search toolbar and the cursor will be moved to the first matching text in the editor. As you type the search will continue. Press <b>Return</b> to move to the next match and press <b>Esc</b> to cancel the search at the position you've reached.</p>
<p>Pressing <b>Tab</b> after you've typed one or more characters invokes completion. Completion works like this: start typing some text then press <b>Tab</b>. If the editor can find another item of text that begins with the same characters it will complete your text for you; if it finds more than one possibility it will pop up a list of choices. You can use the arrow keys to choose a piece of text then press <b>Return</b>, or press <b>Esc</b> to continue typing. You can switch off completion in the <em>Preferences</em> dialog.</p>
<p>When you enter <tt>-&gt;</tt> or <tt>.</tt> the editor will pop up a command completion list; use the arrow keys to move to the item you want and press <b>Return</b>, or press <b>Esc</b> to ignore the list.</p>
<h3><a name="2"></a>Creating and Using Templates</h3>
<!-- index Creating Templates --><!-- index Templates!Creating and Using --><p><em>Qt Designer</em> supports two approaches to creating template forms. The simplest approach involves little more than saving a<!-- index .ui --> <tt>.ui</tt> file into the templates directory. The second approach involves creating a container widget class to be used as a base class for forms that use the template. We will explain both techniques.</p>
<h4><a name="2-1"></a>Simple Templates</h4>
<p>These templates are most useful when you want to create a whole set of forms which all have some common widgets. For example, you might have a project that will require many forms, all of which need to be branded with a company name and logo.</p>
<p>First we'll create the simple template.</p>
<ol type=1><li><p>Click <b>File|New</b> to invoke the <em>New File</em> dialog. Click the Dialog template then click <b>OK</b>.</p>
<li><p>Click the <b>Text Label</b> toolbar button, then click near the top left of the form. Change the font Point Size property to 16 and change the <em>text</em> property to your or your company's name. Click the <b>Line</b> toolbar button, then click the form below the label; click Horizontal on the pop-up menu.</p>
<li><p>Select the label and the line. (<b>Ctrl+Click</b> the form, then drag the rubber band so that it touches or includes the line and the label.) Press <b>Ctrl+L</b> to lay them out vertically.</p>
<li><p>Click the <b>Save</b> toolbar button. In the <em>Save As</em> dialog, navigate to <em>Qt Designer</em>'s templates directory, e.g. (<tt>qt/tools/designer/templates</tt>. Type in the name 'Simple_Dialog.ui' and click <b>Save</b>.</p>
<li><p>Right click the form in the Forms list, then click Remove form from project.</p>
</ol><p>Now that we have the simple template we are ready to use it. Click <b>File|New</b> to invoke the <em>New File</em> dialog. One of the templates that will appear is 'Simple Dialog'. Click the simple dialog, then click <b>OK</b>. A new form will appear with the same widgets and layout as the template. Add any other widgets and functionality. When you attempt to save the form you will be prompted for a new form name.</p>
<h4><a name="2-2"></a>Base-class Templates</h4>
<!-- index Templates!Base Class Templates --><p>These templates are useful when you want to provide some default functionality that all the forms based on the base class can inherit. In our example we'll use a class called <b>SizeAware</b> that remembers and restores its size as the basis of a template. We won't describe the class itself, but will focus instead on making use of it as a <em>Qt Designer</em> template. The source for the class is in <tt>qt/tools/designer/examples/sizeaware</tt>.</p>
<p>The template can either be based on a custom widget or on any existing container widget.</p>
<p>If you want to base the template on a custom widget you must first add it to <em>Qt Designer</em>'s custom widgets. Click <b>Tools|Custom|Edit Custom Widgets</b> to invoke the <em>Edit Custom Widgets</em> dialog. (This dialog is explained in more detail in <a href="designer-manual-7.html#1">Simple Custom Widgets</a>.) Click <b>New Widget</b>. Change the Class from 'MyCustomWidget' to 'SizeAware'. Click the Headerfile ellipsis button and select the file <tt>qt/tools/designer/examples/sizeaware/sizeaware.h</tt>. Check the Container Widget checkbox. This class provides two properties. Click the Properties tab. Click <b>New Property</b> and change the property name to 'company'. Click the <b>New Property</b> again and change the property name to 'settingsFile'. Click <b>Close</b>.</p>
<p>To create a template, based on an existing widget or on your own custom widget, click <b>File|Create Template</b> to invoke the <em>Create Template</em> dialog. Change the Template Name to 'SizeAware' and click the SizeAware base class, then click <b>Create</b>. The dialog will create the template and close itself immediately. Close <em>Qt Designer</em> and restart it.</p>
<p>A new template, 'SizeAware' is now available from the list of templates. Click <b>File|New</b>, click SizeAware and click <b>OK</b>. Note that the two properties, company and settingsFile, are available in the Properties window. Any forms based on this template will remember their size and resize when reloaded. (In practical applications having one settingsFile per form is not recommended, so this template would only really be useful for applications that have a single main window.)</p>
<h3><a name="3"></a>Integrating Qt Designer with Visual Studio</h3>
<p>By default, <em>Qt Designer</em> is integrated into Visual Studio 6.0 when Qt is installed. Visual Studio.Net does not support this integration.</p>
<!-- index Visual Studio --><p>If installed successfully, a toolbar should be provided in Visual Studio with the following buttons:</p>
<ul><li><p>New Qt Project -- A small application wizard</p>
<li><p>New Qt Dialog -- Add an empty Qt Dialog to the active project, or add an existing dialog</p>
<li><p>Qt GUI Designer -- Run <em>Qt Designer</em></p>
<li><p>Open Qt Project -- Runs <tt>qmake</tt> with a<!-- index .pro --> <tt>.pro</tt> file</p>
<li><p>Write Qt Project -- Saves the current VS project as a<!-- index .pro --> <tt>.pro</tt> file</p>
<li><p>Use Qt -- Add the Qt libraries to the active project</p>
<li><p>Add MOC -- Add the <tt>moc</tt> precompiler to the active file</p>
</ul><p>Double clicking a<!-- index .ui --> <tt>.ui</tt> file in the workspace overview will now launch <em>Qt Designer</em>.</p>
<!-- index Macros!Q_OBJECT --><!-- index Q_OBJECT --><p>If you create a<!-- index .cpp --> <tt>.cpp</tt> file which contains the <tt>Q_OBJECT</tt> macro you will need an additional file which is generated by the <tt>moc</tt> to be included in your project. For example, if you have 'file.cpp', then the last line would be <tt>#include "file.moc"</tt> and the additional file would be called 'file.moc'. To ensure that Visual Studio executes the <tt>moc</tt> and generates this file you must create a custom dependency. Double click the<!-- index .cpp --> <tt>.cpp</tt> file (in your project workspace) that contains the <tt>Q_OBJECT</tt> macro. Click the <b>Add MOC</b> toolbar button; this will create an empty<!-- index .moc --> <tt>.moc</tt> file in your project workspace. Right click the newly created<!-- index .moc --> <tt>.moc</tt> file, then click <b>Settings</b> from the pop-up menu to invoke the Project Settings dialog. Click the Custom Build tab. Click the <b>Dependencies</b> button to pop up the User Defined Dependencies dialog. Type in <tt>$(InputDir)\$(InputPath)</tt>, then press <b>Return</b>. Click <b>OK</b> to leave the Dependencies dialog, then click <b>OK</b> to leave the Project Settings dialog.</p>
<p>If you wish to delete the add-in remove it from the toolbar then delete the<!-- index qmsdev.dll --> <tt>qmsdev.dll</tt> file from the add-ins directory.</p>
<h4><a name="3-1"></a>Creating Makefiles without qmake</h4>
<!-- index Makefiles --><p>The <tt>qmake</tt> tool provided with Qt can create Makefiles appropriate to your platform based on<!-- index .pro --> <tt>.pro</tt> project files. This section describes the dependencies involved in building a Qt application and gives a couple of simple example Makefiles. This section assumes that you have a good understanding of Makefiles.</p>
<!-- index Macros!Q_OBJECT --><!-- index Q_OBJECT --><p><em>Qt Designer</em> produces<!-- index .ui --> <tt>.ui</tt> files which are used to generate<!-- index .h --> <tt>.h</tt> and<!-- index .cpp --> <tt>.cpp</tt> files for the compiler to compile. The<!-- index .ui --> <tt>.ui</tt> files are processed by <tt>uic</tt>. Classes which inherit from <a href="qobject.html">QObject</a>, e.g. those which use slots and signals, require an additional<!-- index .cpp --> <tt>.cpp</tt> file to be generated. These files are generated by the <tt>moc</tt> and are named '<em>moc_</em>file.cpp' where the original<!-- index .cpp --> <tt>.cpp</tt> file is called 'file.cpp'. If your<!-- index .cpp --> <tt>.cpp</tt> file contains the <tt>Q_OBJECT</tt> macro an additional file 'file.moc' should be generated which must be <tt>#include</tt>d in the<!-- index .cpp --> <tt>.cpp</tt>, normally at the end. This requires an extra dependency being created.</p>
<p>Processing<!-- index .ui --> <tt>.ui</tt> files with <tt>uic</tt> is done <em>twice</em>:</p>
<pre>
uic myform.ui -o myform.h
uic myform.ui -i myform.h -o myform.cpp
</pre>
<p>The first execution creates the header file, the second creates the<!-- index .cpp --> <tt>.cpp</tt> file. If you wish to subclass a form you can use <tt>uic</tt> to generate subclass skeletons:</p>
<pre>
uic formbase.ui -o formbase.h
uic formbase.ui -i formbase.h -o formbase.cpp
uic -subdecl Form formbase.h formbase.ui -o form.h
uic -subimpl Form form.h formbase.ui -o form.cpp
</pre>
<p>First we generate the header and implementation file for our base class. Then we generate the header and implementation skeletons for our subclass. Note that the use of <tt>uic</tt> to generate skeletons is not something that would be done in a Makefile, we mention it here because it can be useful for command line users. Note also that the command line for <tt>-subdecl</tt> and for <tt>-subimpl</tt> are subtly different.</p>
<p>For implementation files that contain classes which inherit from <a href="qobject.html">QObject</a> we must create moc files:</p>
<pre>
moc myform.h -o moc_myform.cpp
</pre>
<p>We'll look at a simple Makefile to see the dependencies in practice.</p>
<pre>
myapp: moc_myform.o myform.o main.o
        g++ -lqt -o myapp moc_myform.o myform.o main.o

main.o: main.cpp
        g++ -o main.o main.cpp

moc_myform.o: moc_myform.cpp
        g++ -o moc_myform.o moc_myform.cpp

moc_myform.cpp: myform.h
        moc myform.h -o moc_myform.cpp

myform.o: myform.cpp
        g++ -o myform.o myform.cpp

myform.cpp: myform.h myform.ui
        uic myform.ui -i myform.h -o myform.cpp

myform.h: myform.ui
        uic myform.ui -o myform.h
</pre>
<p>Note that you may need to include the full path to the commands in your Makefile, and under Windows the filenames are<!-- index moc.exe --> <tt>moc.exe</tt> and<!-- index uic.exe --> <tt>uic.exe</tt>.</p>
<p>In Unix/Linux environments the <tt>make</tt> command may be able to do more for us, so we should be able to use a simpler Makefile like this:</p>
<pre>
myapp: moc_myform.o myform.o main.o
        g++ -lq -o $@ $^

%.o: %.cpp
        g++ -o $^ $@

moc_%.cpp: %.h
        moc $^ -o $@

myform.cpp: myform.h myform.ui
        uic myform.ui -i myform.h -o myform.cpp

myform.h: myform.ui
        uic myform.ui -o myform.h
</pre>
<p>To see more sophisticated Makefiles simply generate them using <tt>qmake</tt> on any of your Qt projects or any of the examples supplied with Qt.</p>
<h3><a name="4"></a>Importing Foreign File Formats</h3>
<!-- index Foreign File Formats --><p>To import a file in a supported foreign file format click <b>File|Open</b>, then click the File Type combobox to choose the file type you wish to load. Click the required file and <em>Qt Designer</em> will convert and load the file.</p>
<p>The filters that <em>Qt Designer</em> uses to read foreign file formats are 'works in progress'. You may have different filters available in your version of <em>Qt Designer</em> than those described here. The easiest way to see which filters are available is to invoke the file open dialog; all your filters are listed in the File Type combobox.</p>
<h4><a name="4-1"></a>Importing Qt Architect Files</h4>
<!-- index Foreign File Formats!Qt Architect --><!-- index Qt Architect --><p><a href="http://qtarch.sourceforge.net/">Qt Architect</a> is a free GUI builder for Qt written by Jeff Harris and Klaus Ebner. The<!-- index .dlg --> <tt>.dlg</tt> extension is associated with Qt Architect dialog files.</p>
<p><em>Qt Designer</em> can read files generated by Qt Architect version 2.1 and above. When given a<!-- index .dlg --> <tt>.dlg</tt> file from a previous version of Qt Architect, <em>Qt Designer</em> tells you how to convert it to the file format of version 2.1. (The conversion procedure varies depending on the version of the<!-- index .dlg --> <tt>.dlg</tt> file.)</p>
<p>The import filter does a good job of importing<!-- index .dlg --> <tt>.dlg</tt> files; the result is almost identical to what you get in Qt Architect. However, the C++ code that uses the dialogs will probably need some adaptation.</p>
<p>There are a few drawbacks to converting Qt Architect files to <em>Qt Designer</em>'s format due to differences between the two tools; these are listed below:</p>
<ul><li><p>Layout spacing and margins</p>
<p>If the<!-- index .dlg --> <tt>.dlg</tt> file layouts use the Qt Architect defaults for layout spacing and margins, <em>Qt Designer</em> will override these with its standard defaults. You can change the "layoutSpacing" and "layoutMargin" properties manually afterwards if necessary.</p>
<li><p>Layout stretches and spacings</p>
<p>Qt Architect gives access to more features of Qt's layout system than <em>Qt Designer</em>, namely stretches and spacings. Qt Designer will attempt to cope with<!-- index .dlg --> <tt>.dlg</tt> files that use these features, but sometimes the resizing will not be what you want. The solution typically involves setting the "sizePolicy" properties of some widgets and inserting or deleting spacers.</p>
<li><p>Mixing managed and unmanaged widgets</p>
<p>Qt Architect allows a widget to have some child widgets managed by a layout and other child widgets with fixed positions. When presented with a<!-- index .dlg --> <tt>.dlg</tt> file that uses this facility, <em>Qt Designer</em> will silently put the fixed position widgets into the layout.</p>
<li><p>Pixmaps</p>
<p><em>Qt Designer</em> ignores pixmaps specified in<!-- index .dlg --> <tt>.dlg</tt> files. These have to be restored manually in <em>Qt Designer</em>.</p>
</ul><h4><a name="4-2"></a>Importing Glade Files</h4>
<!-- index Foreign File Formats!Glade --><!-- index Glade --><p><a href="http://glade.pn.org/">Glade</a> is a free GUI builder for GTK+ and GNOME written by Damon Chaplin. The<!-- index .glade --> <tt>.glade</tt> extension is associated with Glade files.</p>
<p><em>Qt Designer</em> has been tested with Glade files up to version 0.6.0 and might work with later versions as well.</p>
<p>Although Glade does not target Qt, the layout system and the widget set of GTK+ are similar to those of Qt, so the filter will retain most of the information in the<!-- index .glade --> <tt>.glade</tt> file.</p>
<p>There are some considerations regarding the conversion of Glade files, as listed below:</p>
<ul><li><p>Ampersands (&amp;) in labels</p>
<p>Qt displays an ampersand when a <a href="qlabel.html">QLabel</a> has no buddy. (A buddy is a widget that accepts focus on behalf of a <a href="qlabel.html">QLabel</a>.) Glade allows GtkLabel widgets with an (underlined) accelerator key but with no buddy. This is an error since users expect underlined characters to be accelerators. In this situation, Qt displays the ampersand itself instead of underlining the accelerator key. You should go over these <a href="qlabel.html">QLabel</a> widgets and set their "<em>buddy</em>" property.</p>
<li><p>Layout placeholders</p>
<p>GTK allows a layout position to be occupied by a placeholder. <em>Qt Designer</em> converts those placeholders into <a href="qlabel.html">QLabel</a>s whose text is "?" in red, so that you can find them and fix them manually.</p>
<li><p>GTK+ or GNOME widget with no Qt equivalent</p>
<p>Qt has equivalents for most GTK+ widgets, but Glade also supports GNOME, whose goal is to provide a complete desktop environment. Because Qt's scope is narrower, when <em>Qt Designer</em> encounters a widget it cannot convert, it replaces it with a label that indicates the problem. For example, a GnomePaperSelector will be replaced by a <a href="qlabel.html">QLabel</a> whose text is "GnomePaperSelector?" in red. If you are porting to KDE, you might want to use the corresponding KDE widget.</p>
<p>Other GTK+/GNOME widgets are only supported in certain contexts. For example, the GnomeDruid can be embedded in another widget, whereas the corresponding <a href="qwizard.html">QWizard</a> class cannot.</p>
<li><p>Message boxes and other high-level dialogs</p>
<p>Glade supports editing of GnomeMessageBox, GtkFileSelection, GtkFontSelectionDialog and others. This is trivially achieved in Qt by means of a <a href="qmessagebox.html">QMessageBox</a> dialog, a <a href="qfiledialog.html">QFileDialog</a>, a <a href="qfontdialog.html">QFontDialog</a>, etc., in C++ code.</p>
<li><p>Stand-alone popup menus</p>
<p><em>Qt Designer</em> only supports popup menus inside a <a href="qmainwindow.html">QMainWindow</a>. If you need a stand-alone popup menu (presumably a context menu), you can easily write code that does this using <a href="qpopupmenu.html">QPopupMenu</a>.</p>
<li><p>Size policy parameters</p>
<p>Glade provides size policies in the "Place" tab of the property editor. <em>Qt Designer</em> does not attempt to make use of the padding, expand, shrink and fill information, as the Qt defaults are usually good enough. In a few cases, you might have to set the "<em>sizePolicy</em>" property manually to obtain the effect you want.</p>
<li><p>GNOME standard icons</p>
<p>GNOME provides a large set of standard icons. <em>Qt Designer</em> will ignore references to these. If you are porting to KDE, you might want to manually set the standard KDE icons.</p>
<li><p>Packer layout</p>
<p>GTK+ provides a class called GtkPacker that provides for exotic layouts; Qt does not provide a <b>QPackerLayout</b> and none is planned. <em>Qt Designer</em> will treat packer layouts as if they were vertical layouts and you will probably have to change them to whatever combination of layouts that produces the right effect.</p>
<li><p>Incorrectly-justified text after conversion</p>
<p>The "<em>hAlign</em>" property is sometimes set wrongly, in which case you have to change it manually. It is caused by a quirk in Glade.</p>
</ul><!-- eof -->
<p align="right">[<a href="designer-manual-8.html">Prev: Creating Database Applications</a>] [<a href="designer-manual.html">Home</a>] [<a href="designer-manual-10.html">Next: Reference: Key Bindings</a>]</p>
<p><address><hr><div align=center>
<table width=100% cellspacing=0 border=0><tr>
<td>Copyright &copy; 2007
<a href="troll.html">Trolltech</a><td align=center><a href="trademarks.html">Trademarks</a>
<td align=right><div align=right>Qt 3.3.8</div>
</table></div></address></body>
</html>