Что такое эквивалент QMessageBox::information()
, когда вы хотите написать приложение QML с помощью Qt Quick Controls?Как показать окно с помощью Qt Quick Controls?
12
A
ответ
10
В Qt 5.2 есть MessageDialog:
http://doc.qt.io/qt-5/qml-qtquick-dialogs-messagedialog.html
import QtQuick 2.2
import QtQuick.Dialogs 1.1
MessageDialog {
id: messageDialog
title: "May I have your attention please"
text: "It's so cool that you are using Qt Quick."
onAccepted: {
console.log("And of course you could only agree.")
Qt.quit()
}
Component.onCompleted: visible = true
}
1
К сожалению, есть не один, по крайней мере, не в судоходном Qt Quick Controls, как в Qt 5.1.1 :(
Вы должны добавить его в свой проект через QObject
wrapper.
2
Ok это делает работу (плохо) Импорт Window
объекта:.
import QtQuick.Window 2.1
Затем добавить это в главном окне (или вы можете поместить его в другой файл, я думаю):
function showMessage(text, title)
{
messageBox.text = text;
messageBox.title = title;
messageBox.visible = true;
}
Window {
id: messageBox
modality: Qt.ApplicationModal
title: ""
visible: false
property alias text: messageBoxLabel.text
color: parent.color
minimumHeight: 100
minimumWidth: 300
Label {
anchors.margins: 10
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: messageBoxButton.top
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
id: messageBoxLabel
text: ""
}
Button {
anchors.margins: 10
id: messageBoxButton
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
text: "Ok"
onClicked: messageBox.visible = false
}
}
Проблемы с ним:
- Окно может быть сжат так, чтобы текст и кнопка перекрытия.
- Минимальный размер окна жестко закодирован, а не рассчитывается из размера текста.
- Вы не можете выбрать текст.
- Выглядит немного дерьмо.
3
вы можете использовать Popup В QtQuick управления 2:
import QtQuick.Window 2.2
import QtQuick.Controls 2.0 // or import Qt.labs.controls 1.0
Window {
id: window
width: 400
height: 400
visible: true
Button {
text: "Open"
onClicked: popup.open()
}
Popup {
id: popup
x: 100
y: 100
width: 200
height: 300
modal: true
focus: true
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
}
}
0
// CenteredDialog.qml
import QtQml 2.2
import QtQuick 2.9
import QtQuick.Controls 2.2
Dialog {
parent: ApplicationWindow.overlay
x: (parent.width - width)/2
y: (parent.height - height)/2
focus: true
modal: true
property alias text: messageText.text
Label {
id: messageText
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
anchors.fill: parent
}
standardButtons: Dialog.Ok
}
Вы можете объявить CenteredDialog { id: centeredDialog }
где-то, то в какой-то обработчик событий вы можете позвонить:
centeredDialog.title = qsTr("Error!")
centeredDialog.text = qsTr("Access violation")
centeredDialog.visible = true
Смежные вопросы
- 1. Custom Styling Qt Quick Controls
- 2. Qt Quick Controls 2 Splash Screen
- 3. Структура мобильного приложения с Qt Quick Controls
- 4. Qt Quick Controls 2 Окно настроек на macOs
- 5. QtCreator новый проект Qt Quick Controls vs. Qt Quick
- 6. Qt quick controls ListView size issue
- 7. ReferenceError in qt quick controls tabview
- 8. Qt Quick Controls 2.0 круглая спинбокс
- 9. Как создать эквивалент ListView QtWidgets в Qt Quick Controls?
- 10. Qt Quick Controls 2.0 Текстовое поле не может выбрать текст
- 11. Qt Quick Controls 2 экранная цифровая клавиатура на спин-боксе
- 12. Qt Quick Controls 2 и Windows Phone 10
- 13. Qt Quick - DropArea, перекрывающийся
- 14. Как отобразить формат форматированного текста (rtf) с помощью Qt Quick?
- 15. Qt Quick vs. Qt Widget
- 16. Как создать тест Qt-Quick
- 17. Как показать линии сетки в Qt Quick TableView?
- 18. Qt Quick Window Minimize Event
- 19. Qbs: Как включить Quick Compiler Qt?
- 20. Qt 5 - QWidget в Qt Quick 2
- 21. Модульное тестирование для Qt Quick
- 22. Плохое масштабирование текста с помощью Qt Quick 1.1/QML
- 23. QSplashScreen on Qt Quick 2
- 24. Qt Quick не переводит компоненты, загруженные с помощью загрузчика
- 25. Операция блокировки в Qt Quick
- 26. Qt Quick (QML) цвет декларации
- 27. Как разобрать JSON для Qt Quick?
- 28. Как вставить Qt Quick code в C++?
- 29. Как создать Qt Quick 2d Renderer?
- 30. Развернуть приложение QT Quick Desktop для Windows
В моем проекте я использую компонент окна QML как модальный для этого, что я с учетом моих потребностей: http://qt-project.org/doc /qt-5.0/qtquick/qml-qtquick-window2-window.html – koopajah
Можете привести пример? – Timmmm