From a312fc13d99c20f78d5950a69f4b8b65828bd6c2 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Wed, 9 Jul 2014 10:33:10 +0200 Subject: Dialog: Add missing docs Also fixed a qWarning and updated example import statement. Change-Id: I873b52e297bbefe66c6c131573804eee98c40a2f Reviewed-by: Jerome Pasion --- .../quick/dialogs/systemdialogs/CustomDialogs.qml | 2 +- src/dialogs/plugin.cpp | 4 +- src/dialogs/qquickdialog.cpp | 229 ++++++++++++++++++++- 3 files changed, 223 insertions(+), 12 deletions(-) diff --git a/examples/quick/dialogs/systemdialogs/CustomDialogs.qml b/examples/quick/dialogs/systemdialogs/CustomDialogs.qml index 81c06b7e..ffc3265b 100644 --- a/examples/quick/dialogs/systemdialogs/CustomDialogs.qml +++ b/examples/quick/dialogs/systemdialogs/CustomDialogs.qml @@ -38,7 +38,7 @@ ** ****************************************************************************/ -import QtQuick 2.2 +import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.1 diff --git a/src/dialogs/plugin.cpp b/src/dialogs/plugin.cpp index 74672f65..aef31e50 100644 --- a/src/dialogs/plugin.cpp +++ b/src/dialogs/plugin.cpp @@ -70,7 +70,7 @@ static void initResources() QT_BEGIN_NAMESPACE /*! - \qmlmodule QtQuick.Dialogs 1.1 + \qmlmodule QtQuick.Dialogs 1.2 \title Qt Quick Dialogs QML Types \ingroup qmlmodules \brief Provides QML types for standard file, color picker and message dialogs @@ -80,7 +80,7 @@ QT_BEGIN_NAMESPACE To use the types in this module, import the module with the following line: \code - import QtQuick.Dialogs 1.1 + import QtQuick.Dialogs 1.2 \endcode */ diff --git a/src/dialogs/qquickdialog.cpp b/src/dialogs/qquickdialog.cpp index bed69e7b..788c1e4c 100644 --- a/src/dialogs/qquickdialog.cpp +++ b/src/dialogs/qquickdialog.cpp @@ -51,17 +51,35 @@ QT_BEGIN_NAMESPACE \qmltype Dialog \instantiates QQuickDialog \inqmlmodule QtQuick.Dialogs - \ingroup qtquick-visual - \brief A generic QtQuick dialog wrapper with standard buttons + \ingroup dialogs + \brief A generic QtQuick dialog wrapper with standard buttons. \since 5.3 - Dialog provides an item with a platform-tailored button box for a dialog. - The \l implementation Item is the default property (the only allowed child - element). + The purpose of Dialog is to wrap arbitrary content into a \e {dialog window} + including a row of platform-tailored buttons. + + The \l contentItem is the default property (the only allowed child + element), and items declared inside the Dialog will actually be children of + another Item inside the \c contentItem. The row of \l standardButtons will + also be inside \c contentItem below the declared content, and Dialog will + attempt to size itself to fit the content and the buttons. + + Alternatively it is possible to bind \l contentItem to a custom Item, in + which case there will be no buttons, no margins, and the custom content + will fill the whole dialog. This is much like creating a \l Window, + except that on platforms which do not support showing multiple windows, + the window borders will be simulated and it will be shown in same scene. + + \note do not attempt to bind the width or height of the dialog to the width + or height of its content, because Dialog already tries to size itself + to the content. If your goal is to change or eliminate the margins, you + must override \l contentItem. If your goal is simply to show a window + (whether modal or not), and your platform supports it, it is simpler to use + \l Window instead. */ /*! - \qmlsignal QtQuick::Dialogs::Dialog::accepted + \qmlsignal Dialog::accepted() This signal is emitted by \l accept(). @@ -69,13 +87,113 @@ QT_BEGIN_NAMESPACE */ /*! - \qmlsignal QtQuick::Dialogs::Dialog::rejected + \qmlsignal Dialog::rejected() This signal is emitted by \l reject(). The corresponding handler is \c onRejected. */ +/*! + \qmlsignal Dialog::discard() + + This signal is emitted when the user has pressed the \gui Discard button. + + The corresponding handler is \c onDiscard. +*/ + +/*! + \qmlsignal Dialog::help() + + This signal is emitted when the user has pressed the \gui Help button. + Depending on platform, the dialog may not be automatically dismissed + because the help that your application provides may need to be relevant to + the text shown in this dialog in order to assist the user in making a + decision. However on other platforms it's not possible to show a dialog and + a help window at the same time. If you want to be sure that the dialog will + close, you can set \l visible to \c false in your handler. + + The corresponding handler is \c onHelp. +*/ + +/*! + \qmlsignal Dialog::yes() + + This signal is emitted when the user has pressed any button which has + the \l {QMessageBox::YesRole} {YesRole}: \gui Yes or \gui {Yes to All}. + + The corresponding handler is \c onYes. +*/ + +/*! + \qmlsignal Dialog::no() + + This signal is emitted when the user has pressed any button which has + the \l {QMessageBox::NoRole} {NoRole}: \gui No or \gui {No to All}. + + The corresponding handler is \c onNo. +*/ + +/*! + \qmlsignal Dialog::apply() + + This signal is emitted when the user has pressed the \gui Apply button. + + The corresponding handler is \c onApply. +*/ + +/*! + \qmlsignal Dialog::reset() + + This signal is emitted when the user has pressed any button which has + the \l {QMessageBox::ResetRole} {ResetRole}: \gui Reset or \gui {Restore Defaults}. + + The corresponding handler is \c onReset. +*/ + +/*! + \qmlproperty bool Dialog::visible + + This property holds whether the dialog is visible. By default this is + \c false. + + \sa modality +*/ + +/*! + \qmlproperty Qt::WindowModality Dialog::modality + + Whether the dialog should be shown modal with respect to the window + containing the dialog's parent Item, modal with respect to the whole + application, or non-modal. + + By default it is \c Qt.WindowModal. + + Modality does not mean that there are any blocking calls to wait for the + dialog to be accepted or rejected: only that the user will be prevented + from interacting with the parent window or the application windows + until the dialog is dismissed. +*/ + +/*! + \qmlmethod void Dialog::open() + + Shows the dialog to the user. It is equivalent to setting \l visible to + \c true. +*/ + +/*! + \qmlmethod void Dialog::close() + + Closes the dialog. +*/ + +/*! + \qmlproperty string Dialog::title + + The title of the dialog window. +*/ + /*! \class QQuickDialog \inmodule QtQuick.Dialogs @@ -182,9 +300,33 @@ void QQuickDialog::setStandardButtons(StandardButtons buttons) */ /*! - \qmlproperty QObject Dialog::implementation + \qmlproperty QObject Dialog::contentItem The QML object which implements the dialog contents. Should be an \l Item. + + For example the following dialog will show custom content and no buttons: + + \qml + import QtQuick 2.3 + import QtQuick.Controls 1.2 + import QtQuick.Dialogs 1.2 + + Dialog { + visible: true + title: "Blue sky dialog" + + contentItem: Rectangle { + color: "lightskyblue" + implicitWidth: 400 + implicitHeight: 100 + Text { + text: "Hello blue sky!" + color: "navy" + anchors.centerIn: parent + } + } + } + \endqml */ void QQuickDialog::click(QPlatformDialogHelper::StandardButton button, QPlatformDialogHelper::ButtonRole role) @@ -218,7 +360,7 @@ void QQuickDialog::click(QPlatformDialogHelper::StandardButton button, QPlatform emit reset(); break; default: - qWarning("unhandled MessageDialog button %d with role %d", (int)button, (int)role); + qWarning("unhandled Dialog button %d with role %d", (int)button, (int)role); } } @@ -274,4 +416,73 @@ void QQuickDialog::reject() { QQuickAbstractDialog::reject(); } +// TODO after QTBUG-35019 is fixed: fix links to this module's enums +// rather than linking to those in QMessageBox +/*! + \enum QQuickStandardButton::StandardButton + + This enum specifies a button with a standard label to be used on a dialog. +*/ + +/*! + \qmlproperty StandardButtons Dialog::standardButtons + + Dialog has a row of buttons along the bottom, each of which has a + \l {QMessageBox::ButtonRole} {ButtonRole} that determines which signal + will be emitted when the button is pressed. You can also find out which + specific button was pressed after the fact via the \l clickedButton + property. You can control which buttons are available by setting + standardButtons to a bitwise-or combination of the following flags: + + \table + \row \li StandardButton.Ok \li An \gui OK button defined with the \l {QMessageBox::AcceptRole} {AcceptRole}. + \row \li StandardButton.Open \li An \gui Open button defined with the \l {QMessageBox::AcceptRole} {AcceptRole}. + \row \li StandardButton.Save \li A \gui Save button defined with the \l {QMessageBox::AcceptRole} {AcceptRole}. + \row \li StandardButton.Cancel \li A \gui Cancel button defined with the \l {QMessageBox::RejectRole} {RejectRole}. + \row \li StandardButton.Close \li A \gui Close button defined with the \l {QMessageBox::RejectRole} {RejectRole}. + \row \li StandardButton.Discard \li A \gui Discard or \gui {Don't Save} button, depending on the platform, + defined with the \l {QMessageBox::DestructiveRole} {DestructiveRole}. + \row \li StandardButton.Apply \li An \gui Apply button defined with the \l {QMessageBox::ApplyRole} {ApplyRole}. + \row \li StandardButton.Reset \li A \gui Reset button defined with the \l {QMessageBox::ResetRole} {ResetRole}. + \row \li StandardButton.RestoreDefaults \li A \gui {Restore Defaults} button defined with the \l {QMessageBox::ResetRole} {ResetRole}. + \row \li StandardButton.Help \li A \gui Help button defined with the \l {QMessageBox::HelpRole} {HelpRole}. + \row \li StandardButton.SaveAll \li A \gui {Save All} button defined with the \l {QMessageBox::AcceptRole} {AcceptRole}. + \row \li StandardButton.Yes \li A \gui Yes button defined with the \l {QMessageBox::YesRole} {YesRole}. + \row \li StandardButton.YesToAll \li A \gui {Yes to All} button defined with the \l {QMessageBox::YesRole} {YesRole}. + \row \li StandardButton.No \li A \gui No button defined with the \l {QMessageBox::NoRole} {NoRole}. + \row \li StandardButton.NoToAll \li A \gui {No to All} button defined with the \l {QMessageBox::NoRole} {NoRole}. + \row \li StandardButton.Abort \li An \gui Abort button defined with the \l {QMessageBox::RejectRole} {RejectRole}. + \row \li StandardButton.Retry \li A \gui Retry button defined with the \l {QMessageBox::AcceptRole} {AcceptRole}. + \row \li StandardButton.Ignore \li An \gui Ignore button defined with the \l {QMessageBox::AcceptRole} {AcceptRole}. + \endtable + + For example the following dialog will show a calendar with the ability to + save or cancel a date: + + \qml + import QtQuick 2.3 + import QtQuick.Controls 1.2 + import QtQuick.Dialogs 1.2 + + Dialog { + id: dateDialog + visible: true + title: "Choose a date" + standardButtons: StandardButton.Save | StandardButton.Cancel + + onAccepted: console.log("Saving the date " + + calendar.selectedDate.toLocaleDateString()) + + Calendar { + id: calendar + onDoubleClicked: dateDialog.click(StandardButton.Save) + } + } + \endqml + + The default is \c StandardButton.Ok. + + The enum values are the same as in \l QMessageBox::StandardButtons. +*/ + QT_END_NAMESPACE -- cgit v1.2.1 From de8d57dd8b7815e2719186900cd5f65085d8c452 Mon Sep 17 00:00:00 2001 From: Venu Date: Thu, 3 Jul 2014 16:14:27 +0200 Subject: Doc: Updated the example documentation Task-number: QTBUG-37203 Change-Id: I8a3d48ea8163787cd7f41d43ea201be067d310f0 Reviewed-by: Jerome Pasion --- src/controls/doc/src/qtquickcontrols-examples.qdoc | 34 ++++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/controls/doc/src/qtquickcontrols-examples.qdoc b/src/controls/doc/src/qtquickcontrols-examples.qdoc index 205720c8..7c971fa6 100644 --- a/src/controls/doc/src/qtquickcontrols-examples.qdoc +++ b/src/controls/doc/src/qtquickcontrols-examples.qdoc @@ -95,11 +95,39 @@ \example texteditor \title Qt Quick Controls - Text Editor Example \ingroup qtquickcontrols_examples - \brief A text editor application. + \brief A QML app using Qt Quick Controls and a C++ class to + provide a fully-functional rich-text editor application. + \image qtquickcontrols-example-text.png - This example implements a text editor using \l{Qt Quick Controls}, - complete with text formatting options, copy-paste and undo/redo. + The \e{Text Editor Example} presents a sample HTML file using the TextArea + control, preserving the HTML formatting. It uses a C++ class to handle the + document by providing options to open, format, and edit. The app also lets + you open and edit a plain text files. + + The C++ class, DocumentHandler, extends QObject and is registered + as a QML type under the namespace, "\c{org.qtproject.example 1.0}". + + The following snippets show how the type is registered under + a namespace and later imported by \e main.qml. + + QML type registration: + + \code + #include + ... + qmlRegisterType("org.qtproject.example", 1, 0, "DocumentHandler"); + ... + \endcode + + QML namespace import: + + \qml + import org.qtproject.example 1.0 + \endqml + + For more information about registering C++ classses as QML types, see + \l {Defining QML Types from C++}. \include examples-run.qdocinc */ -- cgit v1.2.1 From 0701ca1ee0d03e680e55d5bf4c3a70a99fe8e7b2 Mon Sep 17 00:00:00 2001 From: Piotr Wycisk Date: Fri, 11 Jul 2014 16:30:27 +0200 Subject: Fixed incorrect cursor when moving column in TableView Task-number: QTBUG-37288 TableView: The resize column cursor should not appear when moving a column Change-Id: Ibd3ef44eeb645e8a9c17a58a3fcf2ef06624d3ad Reviewed-by: J-P Nurmi --- src/controls/TableView.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/controls/TableView.qml b/src/controls/TableView.qml index 5feeac01..c621236d 100644 --- a/src/controls/TableView.qml +++ b/src/controls/TableView.qml @@ -1018,6 +1018,7 @@ ScrollView { } } repeater.targetIndex = -1 + repeater.dragIndex = -1 } drag.maximumX: 1000 drag.minimumX: -1000 @@ -1065,7 +1066,7 @@ ScrollView { onDoubleClicked: getColumn(index).resizeToContents() onPressedChanged: if (pressed) offset=mouseX - cursorShape: enabled ? Qt.SplitHCursor : Qt.ArrowCursor + cursorShape: enabled && repeater.dragIndex==-1 ? Qt.SplitHCursor : Qt.ArrowCursor } } } -- cgit v1.2.1 From c1fc264d578ebbb8db2f97568a561d20c40f94a5 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 14 Jul 2014 11:11:02 +0200 Subject: SpinBox: don't force active focus when tapping the buttons on touch This improves the usability of SpinBox on touch devices. The input panel is no longer immediately shown when tapping the buttons, but only when tapping the editor area. Change-Id: I09a2218419490cb33da3b0733c9a42f871edc965 Reviewed-by: Mitch Curtis Reviewed-by: Liang Qi --- src/controls/SpinBox.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controls/SpinBox.qml b/src/controls/SpinBox.qml index c2712dd8..c06a2099 100644 --- a/src/controls/SpinBox.qml +++ b/src/controls/SpinBox.qml @@ -320,7 +320,7 @@ Control { height: upRect ? upRect.height : 0 onClicked: __increment() - onPressed: if (activeFocusOnPress) input.forceActiveFocus() + onPressed: if (!Settings.hasTouchScreen && activeFocusOnPress) input.forceActiveFocus() property bool autoincrement: false; onReleased: autoincrement = false @@ -336,7 +336,7 @@ Control { hoverEnabled: true onClicked: __decrement() - onPressed: if (activeFocusOnPress) input.forceActiveFocus() + onPressed: if (!Settings.hasTouchScreen && activeFocusOnPress) input.forceActiveFocus() property var downRect: __panel ? __panel.downRect : null -- cgit v1.2.1 From e417afed5835e6f9c3c6a623d778f581bc959d1c Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 17 Jul 2014 11:51:17 +0200 Subject: MenuStyle: fix default text rendering type It's missing Text.NativeRendering which makes it look awful. We use native rendering everywhere by default, even in MenuBarStyle. Change-Id: I2f032fad87a0a2700e13d0f55152bb6293d20d9a Reviewed-by: Mitch Curtis --- src/controls/Styles/Base/MenuStyle.qml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/controls/Styles/Base/MenuStyle.qml b/src/controls/Styles/Base/MenuStyle.qml index 0b1db87c..dfb9d472 100644 --- a/src/controls/Styles/Base/MenuStyle.qml +++ b/src/controls/Styles/Base/MenuStyle.qml @@ -191,6 +191,7 @@ Style { text: formatMnemonic(styleData.text, styleData.underlineMnemonic) color: __currentTextColor font.pixelSize: __labelFontPixelSize + renderType: Text.NativeRendering } submenuIndicator: Text { @@ -199,12 +200,14 @@ Style { color: __currentTextColor style: styleData.selected ? Text.Normal : Text.Raised styleColor: Qt.lighter(color, 4) + renderType: Text.NativeRendering } shortcut: Text { text: styleData.shortcut font.pixelSize: __labelFontPixelSize * 0.9 color: __currentTextColor + renderType: Text.NativeRendering } checkmarkIndicator: Loader { -- cgit v1.2.1