首页 > 编程知识 正文

文档突然没了怎么办,一个web应用,用户登录之后,在后续

时间:2023-05-04 01:54:51 阅读:54951 作者:2935

在QML编程中,我们知道通过注册C++文件来向qml发送信号进行交互,其实Qml也可以通过注册QML文件,使用qml文件中的信号进行多页面信息交互,下面是简单的示例:

//main.qmlimport QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Controls 2.12import QmlEvents 1.0Window { id: mainWindow visible: true width: 640 height: 480 title: qsTr("Hello World") Loader { id: loadWindow anchors.top: parent.top anchors.topMargin: 100 anchors.right: parent.right anchors.rightMargin: 50 onLoaded: { console.log("SubWinidow.qml============onLoaded============") } } Rectangle { width: 400 height: 50 anchors.top: parent.top anchors.topMargin: 20 anchors.left: parent.left anchors.leftMargin: 50 Row { spacing: 5 anchors.fill: parent Button { text: qsTr("Show SubWindow") onClicked: { console.log("=============================load SubWindow====") var subParams = { "strText": qsTr("SubWindow"), "strColor": "red" } loadWindow.setSource("qrc:/SubWindow.qml", subParams) loadWindow.item.show() } } Button { text: qsTr("发Json数据") onClicked: { console.log("==========================发Json数据===") var jsonParam = { "title": "标题", "length": 12 } QmlEvents.sendTitleParam(jsonParam) } } Button { text: qsTr("发String") onClicked: { console.log("=============================发String") var strTxt = qsTr("普通字符串") QmlEvents.showName(strTxt) } } } } //显示文字 Text { id: strText text: qsTr("text") anchors.centerIn: parent color: "green" font.pixelSize: 16 } Connections{ target: QmlEvents onSendTitleParam: { console.log("main.qml=====onSendTitleParam======================:" + JSON.stringify(jsonParam)) } onShowName: { console.log("main.qml=====onShowName======================:" + strName) } }} //SubWindow.qmlimport QtQuick 2.12import QtQuick.Window 2.12import QmlEvents 1.0Window { visible: true id: windowView width: 200 height: 200 //modality: Qt.WindowModal //flags: Qt.FramelessWindowHint color: "blue" property string strText: "" property string strColor: "" Rectangle { anchors.centerIn: parent Text { id: name anchors.fill: parent text: strText color: strColor } } MouseArea{//关闭按钮 id: closeBtn z: 1 width: 16 height: 16 hoverEnabled: true cursorShape: Qt.PointingHandCursor anchors.right: parent.right anchors.rightMargin: 10 anchors.top: parent.top anchors.topMargin: 6 Text { font.pixelSize: 18 font.bold: true color: parent.containsMouse ? "red" : "#000000" text: qsTr("×") } onClicked: { windowView.close(); } } Connections{ target: QmlEvents onSendTitleParam: { console.log("SubWindow.qml=====onSendTitleParam======================:" + JSON.stringify(jsonParam)) } onShowName: { console.log("SubWindow.qml======onShowName======================:" + strName) } }} //QmlEvent.qmlpragma Singletonimport QtQuick 2.12QtObject { //发送标题参数可以是json格式 signal sendTitleParam(var jsonParam) //显示名字 signal showName(var strName)} //main.cpp#include <QGuiApplication>#include <QQmlApplicationEngine>int main(int argc, char *argv[]){ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); Q_INIT_RESOURCE(qml); qmlRegisterSingletonType(QUrl("qrc:/QmlEvent.qml"), "QmlEvents", 1, 0, "QmlEvents"); //qml文件单列注册,然后其他qml文件使用注册过的qml单列 QQmlApplicationEngine engine; const QUrl url(QStringLiteral("qrc:/main.qml")); QObject::connect(&engine, &QQmlApplicationEngine::objectCreated, &app, [url](QObject *obj, const QUrl &objUrl) { if (!obj && url == objUrl) QCoreApplication::exit(-1); }, Qt::QueuedConnection); engine.load(url); return app.exec();}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。