Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
abstractformwindow.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
6
7#include <widgetfactory_p.h>
8
9#include <QtWidgets/qtabbar.h>
10#include <QtWidgets/qsizegrip.h>
11#include <QtWidgets/qabstractbutton.h>
12#include <QtWidgets/qtoolbox.h>
13#include <QtWidgets/qmenubar.h>
14#include <QtWidgets/qmainwindow.h>
15#include <QtWidgets/qdockwidget.h>
16#include <QtWidgets/qtoolbar.h>
17
18#include <QtCore/qdebug.h>
19
21
22/*!
23 \class QDesignerFormWindowInterface
24
25 \brief The QDesignerFormWindowInterface class allows you to query
26 and manipulate form windows appearing in \QD's workspace.
27
28 \inmodule QtDesigner
29
30 QDesignerFormWindowInterface provides information about
31 the associated form window as well as allowing its properties to be
32 altered. The interface is not intended to be instantiated
33 directly, but to provide access to \QD's current form windows
34 controlled by \QD's \l {QDesignerFormWindowManagerInterface}{form
35 window manager}.
36
37 If you are looking for the form window containing a specific
38 widget, you can use the static
39 QDesignerFormWindowInterface::findFormWindow() function:
40
41 \snippet lib/tools_designer_src_lib_sdk_abstractformwindow.cpp 0
42
43 But in addition, you can access any of the current form windows
44 through \QD's form window manager: Use the
45 QDesignerFormEditorInterface::formWindowManager() function to
46 retrieve an interface to the manager. Once you have this
47 interface, you have access to all of \QD's current form windows
48 through the QDesignerFormWindowManagerInterface::formWindow()
49 function. For example:
50
51 \snippet lib/tools_designer_src_lib_sdk_abstractformwindow.cpp 1
52
53 The pointer to \QD's current QDesignerFormEditorInterface object
54 (\c formEditor in the example above) is provided by the
55 QDesignerCustomWidgetInterface::initialize() function's
56 parameter. When implementing a custom widget plugin, you must
57 subclass the QDesignerCustomWidgetInterface class to expose your
58 plugin to \QD.
59
60 Once you have the form window, you can query its properties. For
61 example, a plain custom widget plugin is managed by \QD only at
62 its top level, i.e. none of its child widgets can be resized in
63 \QD's workspace. But QDesignerFormWindowInterface provides you
64 with functions that enables you to control whether a widget should
65 be managed by \QD, or not:
66
67 \snippet lib/tools_designer_src_lib_sdk_abstractformwindow.cpp 2
68
69 The complete list of functions concerning widget management is:
70 isManaged(), manageWidget() and unmanageWidget(). There is also
71 several associated signals: widgetManaged(), widgetRemoved(),
72 aboutToUnmanageWidget() and widgetUnmanaged().
73
74 In addition to controlling the management of widgets, you can
75 control the current selection in the form window using the
76 selectWidget(), clearSelection() and emitSelectionChanged()
77 functions, and the selectionChanged() signal.
78
79 You can also retrieve information about where the form is stored
80 using absoluteDir(), its include files using includeHints(), and
81 its layout and pixmap functions using layoutDefault(),
82 layoutFunction() and pixmapFunction(). You can find out whether
83 the form window has been modified (but not saved) or not, using
84 the isDirty() function. You can retrieve its author(), its
85 contents(), its fileName(), associated comment() and
86 exportMacro(), its mainContainer(), its features(), its grid() and
87 its resourceFiles().
88
89 The interface provides you with functions and slots allowing you
90 to alter most of this information as well. The exception is the
91 directory storing the form window. Finally, there is several
92 signals associated with changes to the information mentioned above
93 and to the form window in general.
94
95 \sa QDesignerFormWindowCursorInterface,
96 QDesignerFormEditorInterface, QDesignerFormWindowManagerInterface
97*/
98
99/*!
100 \enum QDesignerFormWindowInterface::FeatureFlag
101
102 This enum describes the features that are available and can be
103 controlled by the form window interface. These values are used
104 when querying the form window to determine which features it
105 supports:
106
107 \value EditFeature Form editing
108 \value GridFeature Grid display and snap-to-grid facilities for editing
109 \value TabOrderFeature Tab order management
110 \value DefaultFeature Support for default features (form editing and grid)
111
112 \sa hasFeature(), features()
113*/
114
115/*!
116 \enum QDesignerFormWindowInterface::ResourceFileSaveMode
117 \since 5.0
118
119 This enum describes how resource files are saved.
120
121
122 \value SaveAllResourceFiles Save all resource files.
123 \value SaveOnlyUsedResourceFiles Save resource files used by form.
124 \value DontSaveResourceFiles Do not save resource files.
125*/
126
127/*!
128 Constructs a form window interface with the given \a parent and
129 the specified window \a flags.
130*/
131QDesignerFormWindowInterface::QDesignerFormWindowInterface(QWidget *parent, Qt::WindowFlags flags)
132 : QWidget(parent, flags)
133{
134}
135
136/*!
137 Destroys the form window interface.
138*/
139QDesignerFormWindowInterface::~QDesignerFormWindowInterface() = default;
140
141/*!
142 Returns a pointer to \QD's current QDesignerFormEditorInterface
143 object.
144*/
145QDesignerFormEditorInterface *QDesignerFormWindowInterface::core() const
146{
147 return nullptr;
148}
149
150/*!
151 \fn QDesignerFormWindowInterface *QDesignerFormWindowInterface::findFormWindow(QWidget *widget)
152
153 Returns the form window interface for the given \a widget.
154*/
155
156static inline bool stopFindAtTopLevel(const QObject *w, bool stopAtMenu)
157{
158 // Do we need to go beyond top levels when looking for the form window?
159 // 1) A dialog has a window attribute at the moment it is created
160 // before it is properly embedded into a form window. The property
161 // sheet queries the layout attributes precisely at this moment.
162 // 2) In the case of floating docks and toolbars, we also need to go beyond the top level window.
163 // 3) In the case of menu editing, we don't want to block events from the
164 // Designer menu, so, we say stop.
165 // Note that there must be no false positives for dialogs parented on
166 // the form (for example, the "change object name" dialog), else, its
167 // events will be blocked.
168
169 if (stopAtMenu && w->inherits("QDesignerMenu"))
170 return true;
171 return !qdesigner_internal::WidgetFactory::isFormEditorObject(w);
172}
173
174QDesignerFormWindowInterface *QDesignerFormWindowInterface::findFormWindow(QWidget *w)
175{
176 while (w != nullptr) {
177 if (QDesignerFormWindowInterface *fw = qobject_cast<QDesignerFormWindowInterface*>(w))
178 return fw;
179 if (w->isWindow() && stopFindAtTopLevel(w, true))
180 break;
181
182 w = w->parentWidget();
183 }
184
185 return nullptr;
186}
187
188/*!
189 \fn QDesignerFormWindowInterface *QDesignerFormWindowInterface::findFormWindow(QObject *object)
190
191 Returns the form window interface for the given \a object.
192
193 \since 4.4
194*/
195
196QDesignerFormWindowInterface *QDesignerFormWindowInterface::findFormWindow(QObject *object)
197{
198 while (object != nullptr) {
199 if (QDesignerFormWindowInterface *fw = qobject_cast<QDesignerFormWindowInterface*>(object))
200 return fw;
201
202 QWidget *w = qobject_cast<QWidget *>(object);
203 // QDesignerMenu is a window, so stopFindAtTopLevel(w) returns 0.
204 // However, we want to find the form window for QActions of a menu.
205 // If this check is inside stopFindAtTopLevel(w), it will break designer
206 // menu editing (e.g. when clicking on items inside an opened menu)
207 if (w && w->isWindow() && stopFindAtTopLevel(w, false))
208 break;
209
210 object = object->parent();
211 }
212
213 return nullptr;
214}
215
216/*!
217 \fn virtual QtResourceSet *QDesignerFormWindowInterface::resourceSet() const
218
219 Returns the resource set used by the form window interface.
220
221 \since 5.0
222 \internal
223*/
224
225/*!
226 \fn virtual void QDesignerFormWindowInterface::setResourceSet(QtResourceSet *resourceSet)
227
228 Sets the resource set used by the form window interface to \a resourceSet.
229
230 \since 5.0
231 \internal
232*/
233
234/*!
235 Returns the active resource (.qrc) file paths currently loaded in \QD.
236 \since 5.0
237 \sa activateResourceFilePaths()
238*/
239
240QStringList QDesignerFormWindowInterface::activeResourceFilePaths() const
241{
242 return resourceSet()->activeResourceFilePaths();
243}
244
245/*!
246 Activates the resource (.qrc) file paths \a paths, returning the count of errors in \a errorCount and
247 error message in \a errorMessages. \QD loads the resources using the QResource class,
248 making them available for form editing.
249
250 In IDE integrations, a list of the project's resource (.qrc) file can be activated, making
251 them available to \QD.
252
253 \since 5.0
254 \sa activeResourceFilePaths()
255 \sa QResource
256*/
257
258void QDesignerFormWindowInterface::activateResourceFilePaths(const QStringList &paths, int *errorCount, QString *errorMessages)
259{
260 resourceSet()->activateResourceFilePaths(paths, errorCount, errorMessages);
261}
262
263/*!
264 \fn virtual QString QDesignerFormWindowInterface::fileName() const
265
266 Returns the file name of the UI file that describes the form
267 currently being shown.
268
269 \sa setFileName()
270*/
271
272/*!
273 \fn virtual QDir QDesignerFormWindowInterface::absoluteDir() const
274
275 Returns the absolute location of the directory containing the form
276 shown in the form window.
277*/
278
279/*!
280 \fn virtual QString QDesignerFormWindowInterface::contents() const
281
282 Returns details of the contents of the form currently being
283 displayed in the window.
284*/
285
286/*!
287 \fn virtual QStringList QDesignerFormWindowInterface::checkContents() const
288
289 Performs checks on the current form and returns a list of richtext warnings
290 about potential issues (for example, top level spacers on unlaid-out forms).
291
292 IDE integrations can call this before handling starting a save operation.
293
294 \since 5.0
295*/
296
297/*!
298 \fn virtual bool QDesignerFormWindowInterface::setContents(QIODevice *device, QString *errorMessage = 0)
299
300 Sets the form's contents using data obtained from the given \a device and returns whether
301 loading succeeded. If it fails, the error message is returned in \a errorMessage.
302
303 Data can be read from QFile objects or any other subclass of QIODevice.
304*/
305
306/*!
307 \fn virtual Feature QDesignerFormWindowInterface::features() const
308
309 Returns a combination of the features provided by the form window
310 associated with the interface. The value returned can be tested
311 against the \l Feature enum values to determine which features are
312 supported by the window.
313
314 \sa setFeatures(), hasFeature()
315*/
316
317/*!
318 \fn virtual bool QDesignerFormWindowInterface::hasFeature(Feature feature) const
319
320 Returns true if the form window offers the specified \a feature;
321 otherwise returns false.
322
323 \sa features()
324*/
325
326/*!
327 \fn virtual QString QDesignerFormWindowInterface::author() const
328
329 Returns details of the author or creator of the form currently
330 being displayed in the window.
331*/
332
333/*!
334 \fn virtual void QDesignerFormWindowInterface::setAuthor(const QString &author)
335
336 Sets the details for the author or creator of the form to the \a
337 author specified.
338*/
339
340/*!
341 \fn virtual QString QDesignerFormWindowInterface::comment() const
342
343 Returns comments about the form currently being displayed in the window.
344*/
345
346/*!
347 \fn virtual void QDesignerFormWindowInterface::setComment(const QString &comment)
348
349 Sets the information about the form to the \a comment
350 specified. This information should be a human-readable comment
351 about the form.
352*/
353
354/*!
355 \fn virtual void QDesignerFormWindowInterface::layoutDefault(int *margin, int *spacing)
356
357 Fills in the default margin and spacing for the form's default
358 layout in the \a margin and \a spacing variables specified.
359*/
360
361/*!
362 \fn virtual void QDesignerFormWindowInterface::setLayoutDefault(int margin, int spacing)
363
364 Sets the default \a margin and \a spacing for the form's layout.
365
366 \sa layoutDefault()
367*/
368
369/*!
370 \fn virtual void QDesignerFormWindowInterface::layoutFunction(QString *margin, QString *spacing)
371
372 Fills in the current margin and spacing for the form's layout in
373 the \a margin and \a spacing variables specified.
374*/
375
376/*!
377 \fn virtual void QDesignerFormWindowInterface::setLayoutFunction(const QString &margin, const QString &spacing)
378
379 Sets the \a margin and \a spacing for the form's layout.
380
381 The default layout properties will be replaced by the
382 corresponding layout functions when \c uic generates code for the
383 form, that is, if the functions are specified. This is useful when
384 different environments requires different layouts for the same
385 form.
386
387 \sa layoutFunction()
388*/
389
390/*!
391 \fn virtual QString QDesignerFormWindowInterface::pixmapFunction() const
392
393 Returns the name of the function used to load pixmaps into the
394 form window.
395
396 \sa setPixmapFunction()
397*/
398
399/*!
400 \fn virtual void QDesignerFormWindowInterface::setPixmapFunction(const QString &pixmapFunction)
401
402 Sets the function used to load pixmaps into the form window
403 to the given \a pixmapFunction.
404
405 \sa pixmapFunction()
406*/
407
408/*!
409 \fn virtual QString QDesignerFormWindowInterface::exportMacro() const
410
411 Returns the export macro associated with the form currently being
412 displayed in the window. The export macro is used when the form
413 is compiled to create a widget plugin.
414
415 \sa {Creating Custom Widgets for Qt Widgets Designer}
416*/
417
418/*!
419 \fn virtual void QDesignerFormWindowInterface::setExportMacro(const QString &exportMacro)
420
421 Sets the form window's export macro to \a exportMacro. The export
422 macro is used when building a widget plugin to export the form's
423 interface to other components.
424*/
425
426/*!
427 \fn virtual QStringList QDesignerFormWindowInterface::includeHints() const
428
429 Returns a list of the header files that will be included in the
430 form window's associated UI file.
431
432 Header files may be local, i.e. relative to the project's
433 directory, \c "mywidget.h", or global, i.e. part of Qt or the
434 compilers standard libraries: \c <QtGui/QWidget>.
435
436 \sa setIncludeHints()
437*/
438
439/*!
440 \fn virtual void QDesignerFormWindowInterface::setIncludeHints(const QStringList &includeHints)
441
442 Sets the header files that will be included in the form window's
443 associated UI file to the specified \a includeHints.
444
445 Header files may be local, i.e. relative to the project's
446 directory, \c "mywidget.h", or global, i.e. part of Qt or the
447 compilers standard libraries: \c <QtGui/QWidget>.
448
449 \sa includeHints()
450*/
451
452/*!
453 \fn virtual QDesignerFormWindowCursorInterface *QDesignerFormWindowInterface::cursor() const
454
455 Returns the cursor interface used by the form window.
456*/
457
458/*!
459 \fn virtual int QDesignerFormWindowInterface::toolCount() const
460
461 Returns the number of tools available.
462
463 \internal
464*/
465
466/*!
467 \fn virtual int QDesignerFormWindowInterface::currentTool() const
468
469 Returns the index of the current tool in use.
470
471 \sa setCurrentTool()
472
473 \internal
474*/
475
476/*!
477 \fn virtual void QDesignerFormWindowInterface::setCurrentTool(int index)
478
479 Sets the current tool to be the one with the given \a index.
480
481 \sa currentTool()
482
483 \internal
484*/
485
486/*!
487 \fn virtual QDesignerFormWindowToolInterface *QDesignerFormWindowInterface::tool(int index) const
488
489 Returns an interface to the tool with the given \a index.
490
491 \internal
492*/
493
494/*!
495 \fn virtual void QDesignerFormWindowInterface::registerTool(QDesignerFormWindowToolInterface *tool)
496
497 Registers the given \a tool with the form window.
498
499 \internal
500*/
501
502/*!
503 \fn virtual QPoint QDesignerFormWindowInterface::grid() const = 0
504
505 Returns the grid spacing used by the form window.
506
507 \sa setGrid()
508*/
509
510/*!
511 \fn virtual QWidget *QDesignerFormWindowInterface::mainContainer() const
512
513 Returns the main container widget for the form window.
514
515 \sa setMainContainer()
516 \internal
517*/
518
519/*!
520 \fn virtual QWidget *QDesignerFormWindowInterface::formContainer() const
521
522 Returns the form the widget containing the main container widget.
523
524 \since 5.0
525*/
526
527/*!
528 \fn virtual void QDesignerFormWindowInterface::setMainContainer(QWidget *mainContainer)
529
530 Sets the main container widget on the form to the specified \a
531 mainContainer.
532
533 \sa mainContainerChanged()
534*/
535
536/*!
537 \fn virtual bool QDesignerFormWindowInterface::isManaged(QWidget *widget) const
538
539 Returns true if the specified \a widget is managed by the form
540 window; otherwise returns false.
541
542 \sa manageWidget()
543*/
544
545/*!
546 \fn virtual bool QDesignerFormWindowInterface::isDirty() const
547
548 Returns true if the form window is "dirty" (modified but not
549 saved); otherwise returns false.
550
551 \sa setDirty()
552*/
553
554/*!
555 \fn virtual QUndoStack *QDesignerFormWindowInterface::commandHistory() const
556
557 Returns an object that can be used to obtain the commands used so
558 far in the construction of the form.
559
560 \internal
561*/
562
563/*!
564 \fn virtual void QDesignerFormWindowInterface::beginCommand(const QString &description)
565
566 Begins execution of a command with the given \a
567 description. Commands are executed between beginCommand() and
568 endCommand() function calls to ensure that they are recorded on
569 the undo stack.
570
571 \sa endCommand()
572
573 \internal
574*/
575
576/*!
577 \fn virtual void QDesignerFormWindowInterface::endCommand()
578
579 Ends execution of the current command.
580
581 \sa beginCommand()
582
583 \internal
584*/
585
586/*!
587 \fn virtual void QDesignerFormWindowInterface::simplifySelection(QList<QWidget*> *widgets) const
588
589 Simplifies the selection of widgets specified by \a widgets.
590
591 \sa selectionChanged()
592 \internal
593*/
594
595/*!
596 \fn virtual void QDesignerFormWindowInterface::emitSelectionChanged()
597
598 Emits the selectionChanged() signal.
599
600 \sa selectWidget(), clearSelection()
601*/
602
603/*!
604 \fn virtual QStringList QDesignerFormWindowInterface::resourceFiles() const
605
606 Returns a list of paths to resource files that are currently being
607 used by the form window.
608
609 \sa addResourceFile(), removeResourceFile()
610*/
611
612/*!
613 \fn virtual void QDesignerFormWindowInterface::addResourceFile(const QString &path)
614
615 Adds the resource file at the given \a path to those used by the form.
616
617 \sa resourceFiles(), resourceFilesChanged()
618*/
619
620/*!
621 \fn virtual void QDesignerFormWindowInterface::removeResourceFile(const QString &path)
622
623 Removes the resource file at the specified \a path from the list
624 of those used by the form.
625
626 \sa resourceFiles(), resourceFilesChanged()
627*/
628
629/*!
630 \fn virtual void QDesignerFormWindowInterface::ensureUniqueObjectName(QObject *object)
631
632 Ensures that the specified \a object has a unique name amongst the
633 other objects on the form.
634
635 \internal
636*/
637
638// Slots
639
640/*!
641 \fn virtual void QDesignerFormWindowInterface::manageWidget(QWidget *widget)
642
643 Instructs the form window to manage the specified \a widget.
644
645 \sa isManaged(), unmanageWidget(), widgetManaged()
646*/
647
648/*!
649 \fn virtual void QDesignerFormWindowInterface::unmanageWidget(QWidget *widget)
650
651 Instructs the form window not to manage the specified \a widget.
652
653 \sa aboutToUnmanageWidget(), widgetUnmanaged()
654*/
655
656/*!
657 \fn virtual void QDesignerFormWindowInterface::setFeatures(Feature features)
658
659 Enables the specified \a features for the form window.
660
661 \sa features(), featureChanged()
662*/
663
664/*!
665 \fn virtual void QDesignerFormWindowInterface::setDirty(bool dirty)
666
667 If \a dirty is true, the form window is marked as dirty, meaning
668 that it is modified but not saved. If \a dirty is false, the form
669 window is considered to be unmodified.
670
671 \sa isDirty()
672*/
673
674/*!
675\fn virtual void QDesignerFormWindowInterface::clearSelection(bool update)
676
677 Clears the current selection in the form window. If \a update is
678 true, the emitSelectionChanged() function is called, emitting the
679 selectionChanged() signal.
680
681 \sa selectWidget()
682*/
683
684/*!
685 \fn virtual void QDesignerFormWindowInterface::selectWidget(QWidget *widget, bool select)
686
687 If \a select is true, the given \a widget is selected; otherwise
688 the \a widget is deselected.
689
690 \sa clearSelection(), selectionChanged()
691*/
692
693/*!
694 \fn virtual void QDesignerFormWindowInterface::setGrid(const QPoint &grid)
695
696 Sets the grid size for the form window to the point specified by
697 \a grid. In this function, the coordinates in the QPoint are used
698 to specify the dimensions of a rectangle in the grid.
699
700 \sa grid()
701*/
702
703/*!
704 \fn virtual void QDesignerFormWindowInterface::setFileName(const QString &fileName)
705
706 Sets the file name for the form to the given \a fileName.
707
708 \sa fileName(), fileNameChanged()
709*/
710
711/*!
712 \fn virtual bool QDesignerFormWindowInterface::setContents(const QString &contents)
713
714 Sets the contents of the form using data read from the specified
715 \a contents string and returns whether the operation succeeded.
716
717 \sa contents()
718*/
719
720/*!
721 \fn virtual void QDesignerFormWindowInterface::editWidgets()
722
723 Switches the form window into editing mode.
724
725 \sa {Qt Widgets Designer's Form Editing Mode}
726
727 \internal
728*/
729
730// Signals
731
732/*!
733 \fn void QDesignerFormWindowInterface::mainContainerChanged(QWidget *mainContainer)
734
735 This signal is emitted whenever the main container changes.
736 The new container is specified by \a mainContainer.
737
738 \sa setMainContainer()
739*/
740
741/*!
742 \fn void QDesignerFormWindowInterface::toolChanged(int toolIndex)
743
744 This signal is emitted whenever the current tool changes.
745 The specified \a toolIndex is the index of the new tool in the list of
746 tools in the widget box.
747
748 \internal
749*/
750
751/*!
752 \fn void QDesignerFormWindowInterface::fileNameChanged(const QString &fileName)
753
754 This signal is emitted whenever the file name of the form changes.
755 The new file name is specified by \a fileName.
756
757 \sa setFileName()
758*/
759
760/*!
761 \fn void QDesignerFormWindowInterface::featureChanged(Feature feature)
762
763 This signal is emitted whenever a feature changes in the form.
764 The new feature is specified by \a feature.
765
766 \sa setFeatures()
767*/
768
769/*!
770 \fn void QDesignerFormWindowInterface::selectionChanged()
771
772 This signal is emitted whenever the selection in the form changes.
773
774 \sa selectWidget(), clearSelection()
775*/
776
777/*!
778 \fn void QDesignerFormWindowInterface::geometryChanged()
779
780 This signal is emitted whenever the form's geometry changes.
781*/
782
783/*!
784 \fn void QDesignerFormWindowInterface::resourceFilesChanged()
785
786 This signal is emitted whenever the list of resource files used by the
787 form changes.
788
789 \sa resourceFiles()
790*/
791
792/*!
793 \fn ResourceFileSaveMode QDesignerFormWindowInterface::resourceFileSaveMode() const
794
795 Returns the resource file save mode behavior.
796
797 \sa setResourceFileSaveMode()
798*/
799
800/*!
801 \fn void QDesignerFormWindowInterface::setResourceFileSaveMode(ResourceFileSaveMode behavior)
802
803 Sets the resource file save mode \a behavior.
804
805 \sa resourceFileSaveMode()
806*/
807
808/*!
809 \fn void QDesignerFormWindowInterface::widgetManaged(QWidget *widget)
810
811 This signal is emitted whenever a widget on the form becomes managed.
812 The newly managed widget is specified by \a widget.
813
814 \sa manageWidget()
815*/
816
817/*!
818 \fn void QDesignerFormWindowInterface::widgetUnmanaged(QWidget *widget)
819
820 This signal is emitted whenever a widget on the form becomes unmanaged.
821 The newly released widget is specified by \a widget.
822
823 \sa unmanageWidget(), aboutToUnmanageWidget()
824*/
825
826/*!
827 \fn void QDesignerFormWindowInterface::aboutToUnmanageWidget(QWidget *widget)
828
829 This signal is emitted whenever a widget on the form is about to
830 become unmanaged. When this signal is emitted, the specified \a
831 widget is still managed, and a widgetUnmanaged() signal will
832 follow, indicating when it is no longer managed.
833
834 \sa unmanageWidget(), isManaged()
835*/
836
837/*!
838 \fn void QDesignerFormWindowInterface::activated(QWidget *widget)
839
840 This signal is emitted whenever a widget is activated on the form.
841 The activated widget is specified by \a widget.
842*/
843
844/*!
845 \fn void QDesignerFormWindowInterface::changed()
846
847 This signal is emitted whenever a form is changed.
848*/
849
850/*!
851 \fn void QDesignerFormWindowInterface::widgetRemoved(QWidget *widget)
852
853 This signal is emitted whenever a widget is removed from the form.
854 The widget that was removed is specified by \a widget.
855*/
856
857/*!
858 \fn void QDesignerFormWindowInterface::objectRemoved(QObject *object)
859
860 This signal is emitted whenever an object (such as
861 an action or a QButtonGroup) is removed from the form.
862 The object that was removed is specified by \a object.
863
864 \since 4.5
865*/
866
867QT_END_NAMESPACE
static bool stopFindAtTopLevel(const QObject *w, bool stopAtMenu)
Combined button and popup list for selecting options.