diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2014-07-17 14:44:52 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@digia.com> | 2014-07-17 14:45:12 +0200 |
commit | 267acc4587c91beafc0f8f3ea97c70801dc269f0 (patch) | |
tree | a55e844e081b0e8d00803e5a1503dd520bd719be | |
parent | fc40bf74c29a66f8af27b2fdb9d764f30814b983 (diff) | |
parent | e417afed5835e6f9c3c6a623d778f581bc959d1c (diff) | |
download | qtquickcontrols-267acc4587c91beafc0f8f3ea97c70801dc269f0.tar.gz |
Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
src/controls/Styles/Base/MenuStyle.qml
Change-Id: I95c8b4f348260b958f158ae28c0984d54af973a8
-rw-r--r-- | examples/quick/dialogs/systemdialogs/CustomDialogs.qml | 2 | ||||
-rw-r--r-- | src/controls/SpinBox.qml | 4 | ||||
-rw-r--r-- | src/controls/Styles/Base/MenuStyle.qml | 3 | ||||
-rw-r--r-- | src/controls/TableView.qml | 3 | ||||
-rw-r--r-- | src/controls/doc/src/qtquickcontrols-examples.qdoc | 34 | ||||
-rw-r--r-- | src/dialogs/plugin.cpp | 4 | ||||
-rw-r--r-- | src/dialogs/qquickdialog.cpp | 229 |
7 files changed, 261 insertions, 18 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/controls/SpinBox.qml b/src/controls/SpinBox.qml index 9b6080f9..03a296f1 100644 --- a/src/controls/SpinBox.qml +++ b/src/controls/SpinBox.qml @@ -321,7 +321,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 @@ -337,7 +337,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 diff --git a/src/controls/Styles/Base/MenuStyle.qml b/src/controls/Styles/Base/MenuStyle.qml index d9cad52b..bfe78f7c 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: styleRoot.font + renderType: Text.NativeRendering } submenuIndicator: Text { @@ -199,6 +200,7 @@ Style { color: __currentTextColor style: styleData.selected ? Text.Normal : Text.Raised styleColor: Qt.lighter(color, 4) + renderType: Text.NativeRendering } shortcut: Text { @@ -216,6 +218,7 @@ Style { wordSpacing: styleRoot.font.wordSpacing } color: __currentTextColor + renderType: Text.NativeRendering } checkmarkIndicator: Loader { diff --git a/src/controls/TableView.qml b/src/controls/TableView.qml index d8db67b9..a5ad16e2 100644 --- a/src/controls/TableView.qml +++ b/src/controls/TableView.qml @@ -1065,6 +1065,7 @@ ScrollView { } } repeater.targetIndex = -1 + repeater.dragIndex = -1 } drag.maximumX: 1000 drag.minimumX: -1000 @@ -1112,7 +1113,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 } } } 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 <QtQml/qqml.h> + ... + qmlRegisterType<DocumentHandler>("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 */ 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,7 +87,7 @@ QT_BEGIN_NAMESPACE */ /*! - \qmlsignal QtQuick::Dialogs::Dialog::rejected + \qmlsignal Dialog::rejected() This signal is emitted by \l reject(). @@ -77,6 +95,106 @@ QT_BEGIN_NAMESPACE */ /*! + \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 \internal @@ -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 |