Convert "extension" dialog example into snippets
Pick-to: 6.5 Task-number: QTBUG-108751 Change-Id: I8ca4e058b832674dc0c8b84024cb70a667ee8db4 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
This commit is contained in:
parent
cb2ff3b733
commit
11da92ba94
Binary file not shown.
Before Width: | Height: | Size: 9.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
@ -5,7 +5,6 @@ if(QT_FEATURE_wizard)
|
|||||||
qt_internal_add_example(classwizard)
|
qt_internal_add_example(classwizard)
|
||||||
qt_internal_add_example(trivialwizard)
|
qt_internal_add_example(trivialwizard)
|
||||||
endif()
|
endif()
|
||||||
qt_internal_add_example(extension)
|
|
||||||
qt_internal_add_example(standarddialogs)
|
qt_internal_add_example(standarddialogs)
|
||||||
qt_internal_add_example(tabdialog)
|
qt_internal_add_example(tabdialog)
|
||||||
if(QT_FEATURE_wizard AND TARGET Qt6::PrintSupport)
|
if(QT_FEATURE_wizard AND TARGET Qt6::PrintSupport)
|
||||||
|
@ -2,7 +2,6 @@ QT_FOR_CONFIG += widgets
|
|||||||
|
|
||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
SUBDIRS = classwizard \
|
SUBDIRS = classwizard \
|
||||||
extension \
|
|
||||||
licensewizard \
|
licensewizard \
|
||||||
standarddialogs \
|
standarddialogs \
|
||||||
tabdialog \
|
tabdialog \
|
||||||
|
@ -1,121 +0,0 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\example dialogs/extension
|
|
||||||
\title Extension Example
|
|
||||||
\ingroup examples-dialogs
|
|
||||||
|
|
||||||
\brief The Extension example shows how to add an extension to a QDialog
|
|
||||||
using the QAbstractButton::toggled() signal and the
|
|
||||||
QWidget::setVisible() slot.
|
|
||||||
|
|
||||||
\image extension-example.png Screenshot of the Extension example
|
|
||||||
|
|
||||||
The Extension application lets the user add search parameters in
|
|
||||||
a dialog and launch a simple or advanced search.
|
|
||||||
|
|
||||||
The simple search has two options: \uicontrol {Match case} and \uicontrol
|
|
||||||
{Search from start}. The advanced search offers search for \uicontrol {Whole words},
|
|
||||||
\uicontrol {Search backward}, and \uicontrol {Search selection}. The
|
|
||||||
application starts with simple search as the default. Click the \uicontrol More button
|
|
||||||
to show the advanced search options:
|
|
||||||
|
|
||||||
\image extension_more.png Screenshot of the Extension example
|
|
||||||
|
|
||||||
\section1 FindDialog Class Definition
|
|
||||||
|
|
||||||
The \c FindDialog class inherits QDialog. QDialog is the
|
|
||||||
base class for dialog windows. A dialog window is a top-level
|
|
||||||
window mostly used for short-term tasks and brief communications
|
|
||||||
with the user.
|
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.h 0
|
|
||||||
|
|
||||||
The \c FindDialog widget is the main application widget, and
|
|
||||||
displays the application's search options and controlling
|
|
||||||
buttons.
|
|
||||||
|
|
||||||
In addition to the constructor, there are several child widgets:
|
|
||||||
|
|
||||||
\list
|
|
||||||
\li A QLineEdit with an associated QLabel to let the
|
|
||||||
user type a word to search for.
|
|
||||||
\li Several \l {QCheckBox}{QCheckBox}es to facilitate the search options.
|
|
||||||
\li Three \l {QPushButton}{QPushButton}s:
|
|
||||||
\list
|
|
||||||
\li the \uicontrol Find button to start a search
|
|
||||||
\li the \uicontrol More button to enable an advanced search
|
|
||||||
\li a QWidget representing the application's extension part
|
|
||||||
\endlist
|
|
||||||
\endlist
|
|
||||||
|
|
||||||
\section1 FindDialog Class Implementation
|
|
||||||
|
|
||||||
Create the standard child widgets for the simple search in the constructor:
|
|
||||||
the QLineEdit with the associated QLabel, two {QCheckBox}es and all the
|
|
||||||
\l {QPushButton}{QPushButton}s.
|
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.cpp 0
|
|
||||||
|
|
||||||
This snippet illustrates how you can define a shortcut key
|
|
||||||
for a widget. A shortcut should be defined by putting the ampersand
|
|
||||||
character (\c &) in front of the letter that should
|
|
||||||
become the shortcut.
|
|
||||||
For example, for \uicontrol {Find what}, pressing \uicontrol Alt
|
|
||||||
and \uicontrol w transfers focus to the QLineEdit widget.
|
|
||||||
Shortcuts can also be used for checking on or off a checkmark.
|
|
||||||
For example, pressing \uicontrol Alt and \uicontrol c puts the check mark
|
|
||||||
on \uicontrol {Match Case} if it was unchecked and vice versa.
|
|
||||||
It is the QLabel::setBuddy() method that links a widget to the shortcut
|
|
||||||
character if it has been defined.
|
|
||||||
|
|
||||||
Set the \uicontrol Find button's default property to true, using the
|
|
||||||
QPushButton::setDefault() function. Then the push button will be
|
|
||||||
pressed if the user presses the Enter (or Return) key. Note that a
|
|
||||||
QDialog can only have one default button.
|
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.cpp 2
|
|
||||||
|
|
||||||
Create the extension widget, and the \l {QCheckBox}{QCheckBox}es associated
|
|
||||||
with the advanced search options.
|
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.cpp 3
|
|
||||||
|
|
||||||
Now that the extension widget is created, connect the \uicontrol
|
|
||||||
More button's \l{QAbstractButton::toggled()}{toggled()} signal to
|
|
||||||
the extension widget's \l{QWidget::setVisible()}{setVisible()} slot.
|
|
||||||
|
|
||||||
The QAbstractButton::toggled() signal is emitted whenever a
|
|
||||||
checkable button changes its state. The signal's argument is true
|
|
||||||
if the button is checked, or false if the button is unchecked. The
|
|
||||||
QWidget::setVisible() slot sets the widget's visible status. If
|
|
||||||
the status is true the widget is shown, otherwise the widget is
|
|
||||||
hidden.
|
|
||||||
|
|
||||||
Since the \uicontrol More button is checkable, the connection makes
|
|
||||||
sure that the extension widget is shown depending on the state of
|
|
||||||
the \uicontrol More button.
|
|
||||||
|
|
||||||
Create checkboxes associated with the advanced search options in
|
|
||||||
a layout installed on the extension widget.
|
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.cpp 4
|
|
||||||
|
|
||||||
Before creating the main layout, create several child layouts
|
|
||||||
for the widgets. First align the QLabel and its buddy, the
|
|
||||||
QLineEdit, using a QHBoxLayout. Then align the QLabel and the QLineEdit
|
|
||||||
vertically with the checkboxes associated with the simple search,
|
|
||||||
using a QVBoxLayout. Create also a QVBoxLayout for the buttons.
|
|
||||||
Finally, lay out the two latter layouts and the extension widget
|
|
||||||
using a QGridLayout.
|
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.cpp 5
|
|
||||||
|
|
||||||
Hide the extension widget using the QWidget::hide()
|
|
||||||
function, making the application only show the simple search
|
|
||||||
options when it starts. When the user wants to access the advanced
|
|
||||||
search options, the dialog only needs to change the visibility of
|
|
||||||
the extension widget. Qt's layout management takes care of the
|
|
||||||
dialog's appearance.
|
|
||||||
*/
|
|
@ -299,7 +299,8 @@ QVariant QDialogPrivate::styleHint(QPlatformDialogHelper::StyleHint hint) const
|
|||||||
\section1 Escape Key
|
\section1 Escape Key
|
||||||
|
|
||||||
If the user presses the Esc key in a dialog, QDialog::reject()
|
If the user presses the Esc key in a dialog, QDialog::reject()
|
||||||
will be called. This will cause the window to close: The \l{QCloseEvent}{close event} cannot be \l{QEvent::ignore()}{ignored}.
|
will be called. This will cause the window to close:
|
||||||
|
The \l{QCloseEvent}{close event} cannot be \l{QEvent::ignore()}{ignored}.
|
||||||
|
|
||||||
\section1 Extensibility
|
\section1 Extensibility
|
||||||
|
|
||||||
@ -307,9 +308,8 @@ QVariant QDialogPrivate::styleHint(QPlatformDialogHelper::StyleHint hint) const
|
|||||||
partial dialog that shows the most commonly used options, and a
|
partial dialog that shows the most commonly used options, and a
|
||||||
full dialog that shows all the options. Typically an extensible
|
full dialog that shows all the options. Typically an extensible
|
||||||
dialog will initially appear as a partial dialog, but with a
|
dialog will initially appear as a partial dialog, but with a
|
||||||
\uicontrol More toggle button. If the user presses the \uicontrol More button down,
|
\uicontrol More toggle button. If the user presses the
|
||||||
the dialog is expanded. The \l{Extension Example} shows how to achieve
|
\uicontrol More button down, the dialog is expanded.
|
||||||
extensible dialogs using Qt.
|
|
||||||
|
|
||||||
\target return
|
\target return
|
||||||
\section1 Return Value (Modal Dialogs)
|
\section1 Return Value (Modal Dialogs)
|
||||||
@ -339,7 +339,11 @@ QVariant QDialogPrivate::styleHint(QPlatformDialogHelper::StyleHint hint) const
|
|||||||
|
|
||||||
\snippet dialogs/dialogs.cpp 0
|
\snippet dialogs/dialogs.cpp 0
|
||||||
|
|
||||||
\sa QDialogButtonBox, QTabWidget, QWidget, QProgressDialog, {Extension Example},
|
A dialog with an extension:
|
||||||
|
|
||||||
|
\snippet dialogs/dialogs.cpp extension
|
||||||
|
|
||||||
|
\sa QDialogButtonBox, QTabWidget, QWidget, QProgressDialog,
|
||||||
{Standard Dialogs Example}
|
{Standard Dialogs Example}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -227,6 +227,33 @@ void Operation::cancel()
|
|||||||
}
|
}
|
||||||
//! [6]
|
//! [6]
|
||||||
|
|
||||||
|
void extension()
|
||||||
|
{
|
||||||
|
using ExtendedControls = QWidget;
|
||||||
|
QPushButton *findButton;
|
||||||
|
QPushButton *moreButton;
|
||||||
|
QWidget *extension;
|
||||||
|
QVBoxLayout *mainLayout;
|
||||||
|
|
||||||
|
//! [extension]
|
||||||
|
findButton = new QPushButton(tr("&Find"));
|
||||||
|
moreButton = new QPushButton(tr("&More..."));
|
||||||
|
moreButton->setCheckable(true);
|
||||||
|
|
||||||
|
extension = new ExtendedControls;
|
||||||
|
mainLayout->addWidget(extension);
|
||||||
|
extension->hide();
|
||||||
|
|
||||||
|
connect(moreButton, &QAbstractButton::toggled, extension, &QWidget::setVisible);
|
||||||
|
//! [extension]
|
||||||
|
|
||||||
|
//! [buttonbox]
|
||||||
|
QDialogButtonBox *buttonBox = new QDialogButtonBox(Qt::Vertical);
|
||||||
|
buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
|
||||||
|
buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);
|
||||||
|
//! [buttonbox]
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
|
|||||||
the buttons (or button texts) yourself and add them to the button box,
|
the buttons (or button texts) yourself and add them to the button box,
|
||||||
specifying their role.
|
specifying their role.
|
||||||
|
|
||||||
\snippet dialogs/extension/finddialog.cpp 1
|
\snippet dialogs/dialogs.cpp buttonbox
|
||||||
|
|
||||||
Alternatively, QDialogButtonBox provides several standard buttons (e.g. OK, Cancel, Save)
|
Alternatively, QDialogButtonBox provides several standard buttons (e.g. OK, Cancel, Save)
|
||||||
that you can use. They exist as flags so you can OR them together in the constructor.
|
that you can use. They exist as flags so you can OR them together in the constructor.
|
||||||
|
Loading…
Reference in New Issue
Block a user