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(trivialwizard)
|
||||
endif()
|
||||
qt_internal_add_example(extension)
|
||||
qt_internal_add_example(standarddialogs)
|
||||
qt_internal_add_example(tabdialog)
|
||||
if(QT_FEATURE_wizard AND TARGET Qt6::PrintSupport)
|
||||
|
@ -2,7 +2,6 @@ QT_FOR_CONFIG += widgets
|
||||
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = classwizard \
|
||||
extension \
|
||||
licensewizard \
|
||||
standarddialogs \
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
@ -307,9 +308,8 @@ QVariant QDialogPrivate::styleHint(QPlatformDialogHelper::StyleHint hint) const
|
||||
partial dialog that shows the most commonly used options, and a
|
||||
full dialog that shows all the options. Typically an extensible
|
||||
dialog will initially appear as a partial dialog, but with a
|
||||
\uicontrol More toggle button. If the user presses the \uicontrol More button down,
|
||||
the dialog is expanded. The \l{Extension Example} shows how to achieve
|
||||
extensible dialogs using Qt.
|
||||
\uicontrol More toggle button. If the user presses the
|
||||
\uicontrol More button down, the dialog is expanded.
|
||||
|
||||
\target return
|
||||
\section1 Return Value (Modal Dialogs)
|
||||
@ -339,7 +339,11 @@ QVariant QDialogPrivate::styleHint(QPlatformDialogHelper::StyleHint hint) const
|
||||
|
||||
\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}
|
||||
*/
|
||||
|
||||
|
@ -227,6 +227,33 @@ void Operation::cancel()
|
||||
}
|
||||
//! [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()
|
||||
{
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
|
||||
the buttons (or button texts) yourself and add them to the button box,
|
||||
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)
|
||||
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