Отображать MessageDialog в qml

#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