#c #qml #qt5
#c #qml #qt5
Вопрос:
Я знаю, что это может быть простым, но я совсем недавно начал использовать qml и qt quick. Я хочу отобразить MessageDialog, содержащий текст, который я получил, например, из C :
Файл QML
import QtQuick 2.2
import QtQuick.Dialogs 1.1
import QtQuick.Window 2.1
Item {
id: container
property string text
property string alertBoxMsg: "Test"
property bool disabled: false
signal clicked
// Suitable default size
width: parent.width
height: parent.height
anchors.centerIn: parent
signal loginButtonClicked(string username, string userpwd);
Rectangle {
id: screenFrame
anchors.centerIn: parent
//border.color: "black"
//border.width: 5
//width: 200
//height: 200
Column {
id: simpleColumn
anchors.centerIn: parent
TextInput {
id: username
text: "username"
color: "green"
MouseArea {
anchors.fill: parent
onClicked: {
container.clearTextInput(username, "username");
}
}
}
TextInput {
id: userpassword
text: "password"
echoMode: TextInput.Password
MouseArea {
anchors.fill: parent
onClicked: {
container.clearTextInput(userpassword, "password");
}
}
}
Button {
id: loginButton
text: "Login"
property string alertBoxMsg: "None"
MouseArea {
anchors.fill: parent
onClicked: {
container.loginButtonClicked(username.text, userpassword.text);
}
}
}
MessageDialog {
id: messageBox;
objectName: "msgBox";
title: "Information";
//text: dialogText;
onAccepted: {
console.log("And of course you could only agree.")
Qt.quit()
}
function displayMessageBox(msg) {
messageBox.text = msg;
messageBox.open();
console.log("Got message:", messageBox.text);
}
}
}
}
function clearTextInput(textInputField, matchingText) {
if(textInputField.text == matchingText) {
textInputField.text = "";
}
textInputField.forceActiveFocus();
}
}
Файл C
QMetaObject::invokeMethod(
msgBox,
"displayMessageBox",
Q_RETURN_ARG(QVariant, returnedValue),
Q_ARG(QVariant, toQmlMessage)
);
Однако MessageDialog отказывается отображаться, но консоль отображает сообщение. Пожалуйста, помогите мне, я не уверен, где я ошибаюсь. Я некоторое время боролся с этим.
Комментарии:
1. Не могли бы вы, пожалуйста, правильно отформатировать код?
2. Я отредактировал и опубликовал полный файл qml @Mitch