当前位置:   article > 正文

QT通过QQuickWidget与QML之间的交互及实现(类似)仪表盘

quickwidget

1、在与qml通信的时候,需要把函数接口暴露给qml需要在函数前面加入Q_INVOKABLE关键字,且需要注意成员函数的公有或私有类型。

例如:

.h文件

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. namespace Ui {
  5. class MainWindow;
  6. }
  7. class MainWindow : public QMainWindow
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit MainWindow(QWidget *parent = 0);
  12. ~MainWindow();
  13. Q_INVOKABLE QString sendData();
  14. private:
  15. Ui::MainWindow *ui;
  16. };
  17. #endif // MAINWINDOW_H

.cpp文件

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QQuickItem>
  4. #include <QQmlApplicationEngine>
  5. #include <QQuickView>
  6. #include <QQmlContext>
  7. MainWindow::MainWindow(QWidget *parent) :
  8. QMainWindow(parent),
  9. ui(new Ui::MainWindow)
  10. {
  11. ui->setupUi(this);
  12. QUrl soucre("qrc:/qml/text.qml");
  13. ui->quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
  14. ui->quickWidget->rootContext()->setContextProperty("testData", this);
  15. ui->quickWidget->setSource(soucre);
  16. ui->quickWidget->setClearColor(QColor(Qt::transparent));
  17. }
  18. MainWindow::~MainWindow()
  19. {
  20. delete ui;
  21. }
  22. QString MainWindow::sendData()
  23. {
  24. QString str = "blue";
  25. return str;
  26. }

main.cpp

  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QQmlApplicationEngine>
  4. #include <QQmlContext>
  5. #include <QQuickView>
  6. int main(int argc, char *argv[])
  7. {
  8. QApplication a(argc, argv);
  9. MainWindow w;
  10. w.show();
  11. return a.exec();
  12. }

text.qml

  1. import QtQuick 2.0
  2. import QtQuick.Controls 1.4
  3. Rectangle{
  4. id:root;
  5. height:200;
  6. width:200;
  7. color: "red"
  8. Text {
  9. anch
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/831279
推荐阅读
相关标签
  

闽ICP备14008679号