C++与QML信号交互(非Q_PROPERTY法)
发布日期:2021-06-30 10:57:16 浏览次数:2 分类:技术文章

本文共 1613 字,大约阅读时间需要 5 分钟。

运行截图如下:

源码如下:

widget.h

#ifndef WIDGET_H#define WIDGET_H#include 
namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget();signals: void sendMsg();public slots: void qmlSlot();private: Ui::Widget *ui;};#endif // WIDGET_H

main.cpp

#include "widget.h"#include 
int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.show(); return a.exec();}

widget.cpp

#include "widget.h"#include "ui_widget.h"#include 
#include
#include
#include
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); ui->quickWidget->setSource(QUrl("qrc:/test.qml")); QObject *pRoot = (QObject*)ui->quickWidget->rootObject(); Q_ASSERT(pRoot); connect(pRoot, SIGNAL(qmlSignal()), this, SLOT(qmlSlot())); connect(ui->pushButton, SIGNAL(clicked(bool)), pRoot, SIGNAL(cSignal())); const QMetaObject *metaObject=pRoot->metaObject(); const QMetaObject *thisObject=this->metaObject();}Widget::~Widget(){ delete ui;}void Widget::qmlSlot(){ ui->pushButton->setText("qmlSlot called!");}

test.qml

import QtQuick 2.0Rectangle {    id: root    color: "green"    Text {        id: myText        text: qsTr("hello")        font.pixelSize: 70        color: "red"        anchors.centerIn: parent    }    signal qmlSignal    signal cSignal    MouseArea {        anchors.fill: parent        onClicked: qmlSignal()    }    onCSignal: {        root.color = "yellow"        myText.text = "how are you?"    }}

 

转载地址:https://it1995.blog.csdn.net/article/details/83155147 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:编码风格工作笔记-初步模仿大佬编码风格
下一篇:Qt文档阅读笔记-Q_ASSERT的另外一总用法(大佬用法)

发表评论

最新留言

不错!
[***.144.177.141]2024年04月25日 15时44分17秒