C++与QML信号交互(非Q_PROPERTY法)
生活随笔
收集整理的這篇文章主要介紹了
C++与QML信号交互(非Q_PROPERTY法)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
運(yùn)行截圖如下:
源碼如下:
widget.h
#ifndef WIDGET_H #define WIDGET_H#include <QWidget>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_Hmain.cpp
#include "widget.h" #include <QApplication>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 <QUrl> #include <QMetaObject> #include <QDebug> #include <QMetaObject>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: rootcolor: "green"Text {id: myTexttext: qsTr("hello")font.pixelSize: 70color: "red"anchors.centerIn: parent}signal qmlSignalsignal cSignalMouseArea {anchors.fill: parentonClicked: qmlSignal()}onCSignal: {root.color = "yellow"myText.text = "how are you?"} }?
總結(jié)
以上是生活随笔為你收集整理的C++与QML信号交互(非Q_PROPERTY法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt工作笔记-Qt5 利用QJson从文
- 下一篇: Qt工作笔记-树图结构的2种方式,实现右