国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

qml學(xué)習(xí)之qwidget與qml結(jié)合使用并調(diào)用信號槽交互

這篇具有很好參考價值的文章主要介紹了qml學(xué)習(xí)之qwidget與qml結(jié)合使用并調(diào)用信號槽交互。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

學(xué)習(xí)qml系列之一

說明:
學(xué)習(xí)qml系列之qwiget和qml信號槽的交互使用,并在qwidget中顯示qml界面

在qml中發(fā)送信號到qwidget里
在qwidget里發(fā)送信號給qml

在qwidget里面調(diào)用qml界面方式

方式一:使用QQuickView
這個是Qt5.0中提供的一個類,繼承自QQickWindow中,用來顯示qt quick用戶界面:

QQuickView *view = new QQuickView;
view->setSource(QUrl::fromLocalFile("main.qml"));
view->show();

QQuickView基于QWindow,需要轉(zhuǎn)換成 QWidget才能使用,還需要如下轉(zhuǎn)換

     QQuickView *pView = new QQuickView();
     QWidget *Widget = QWidget::createWindowContainer(pView, this);
     pView->setResizeMode(QQuickView::SizeRootObjectToView);
     pView->setSource(QUrl("qrc:/main.qml"));

這樣后面能直接調(diào)用由qml轉(zhuǎn)換成的QWidget界面了。

方式二:使用QQuickWidget

QQuickWidget *pWidget = new QQuickWidget();
pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
pWidget->setSource(QUrl("qrc:/main.qml"));

該方法在Qt5.3中提供的一個類,繼承自QWidget,是QQuickWidget一個很方便的包裝器,用于顯示Qt Quick用戶界面

源碼:
qml文件源碼:

import QtQuick 2.1

Rectangle {
    id: root
    color: "green"
    width: 200
    height: 200

    // 發(fā)送給 Qt Widgets 的信號
    signal qmlSignal
    // 從 Qt Widgets 接收到的信號
    signal cSignal//信號的名稱不能以大寫開頭

    Text {
        id: myText
        text: "Click me"
        font.pointSize: 14
        anchors.centerIn: parent
    }

    MouseArea {
        anchors.fill: parent
        onClicked: qmlSignal()
    }

    // 信號處理程序(處理從 Qt Widgets 接收到的信號)
    onCSignal: {
        root.color = "blue"
        myText.text = "Call the qml signal handler"
    }
}

注意:qml中信號的名稱不能以大寫開頭,然后添加到Qt的資源文件中

添加qml quick

QT       += core gui qml quick
#include "widget.h"
#include "ui_widget.h"
#include "widget.h"
#include <QQuickView>
#include <QVBoxLayout>
//#include <QQuickWidget>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
//    ui->setupUi(this);
    resize(300, 300);

    // 方式一
     QQuickView *pView = new QQuickView();
     QWidget *pWidget = QWidget::createWindowContainer(pView, this);
     pView->setResizeMode(QQuickView::SizeRootObjectToView);
     pView->setSource(QUrl("qrc:/main.qml"));

    // 方式二
//    QQuickWidget *pWidget = new QQuickWidget();
//    pWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
//    pWidget->setSource(QUrl("qrc:/main.qml"));

    m_pButton = new QPushButton(this);
    m_pButton->setText("Qt Widgets...");

    QVBoxLayout *pLayout = new QVBoxLayout();
    pLayout->addWidget(pWidget);
    pLayout->addWidget(m_pButton);
    pLayout->setSpacing(10);
    pLayout->setContentsMargins(10, 10, 10, 10);
    setLayout(pLayout);

    // QML 與 Qt Widgets 通信
     QObject *pRoot = (QObject*)pView->rootObject();
//    QObject *pRoot = (QObject*)pWidget->rootObject();
    if (pRoot != NULL) {
        connect(pRoot, SIGNAL(qmlSignal()), this, SLOT(receiveFromQml()));
        connect(m_pButton, SIGNAL(clicked(bool)), pRoot, SIGNAL(cSignal()));
    }

}

Widget::~Widget()
{
    delete ui;
}

void Widget::receiveFromQml()
{
    m_pButton->setText("Call the C++ slot");
}

由于我使用的版本時5.14.1版本,用的QQuickView類

效果如下圖

qml學(xué)習(xí)之qwidget與qml結(jié)合使用并調(diào)用信號槽交互
qml學(xué)習(xí)之qwidget與qml結(jié)合使用并調(diào)用信號槽交互
qml學(xué)習(xí)之qwidget與qml結(jié)合使用并調(diào)用信號槽交互文章來源地址http://www.zghlxwxcb.cn/news/detail-472452.html

到了這里,關(guān)于qml學(xué)習(xí)之qwidget與qml結(jié)合使用并調(diào)用信號槽交互的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【PyQt學(xué)習(xí)篇 · ⑨】:QWidget -控件交互

    【PyQt學(xué)習(xí)篇 · ⑨】:QWidget -控件交互

    setEnabled(bool) :該函數(shù)用于設(shè)置QWidget控件的可用性,參數(shù)bool為True表示該控件為可用狀態(tài),F(xiàn)alse表示該控件為不可用狀態(tài)。當控件處于不可用狀態(tài)時,該控件將無法響應(yīng)用戶的交互事件。 isEnabled() :該函數(shù)用于獲取QWidget控件的當前可用狀態(tài),返回值為一個bool類型,True表示該

    2024年02月05日
    瀏覽(30)
  • 24. 在QML界面中嵌入QWidget窗口

    1. 說明: 目前QT官方主推的界面開發(fā)方式是采用QML進行界面設(shè)計,但在QML未流行之前,很多的項目都是采用QWidget開發(fā)的,把之前的代碼全部轉(zhuǎn)換為QML代碼顯然工作量非常大,如果能將QWidget窗口嵌入到QML界面中,那么開發(fā)效率將提高很多,且QML無法實現(xiàn)的功能也能借助于QWid

    2024年02月01日
    瀏覽(17)
  • Qt第十六章:QWidget與QML混合開發(fā)

    Qt第十六章:QWidget與QML混合開發(fā)

    目錄 一、Qml作為窗口引入 二、Qml作為控件引入(Qml根組件不能是window) 三、兩個問題①Q(mào)ml文件如何調(diào)用python函數(shù)②python代碼如何控制Qml元素。 一、Qml作為窗口引入 例:QWidget窗口中用按鈕 打開和關(guān)閉Qml窗口 ①Q(mào)Widget窗口 ②Qml窗口 注意:此處是直接引入qml文件。如果是從q

    2024年02月16日
    瀏覽(25)
  • PyQt5 GUI編程(QMainWindow與QWidget模塊結(jié)合使用)

    PyQt5 GUI編程(QMainWindow與QWidget模塊結(jié)合使用)

    QWidget是所有用戶界面對象的基類,而QMainWindow 用于創(chuàng)建主應(yīng)用程序窗口的類。它是 QWidget 的一個子類,提供了創(chuàng)建具有菜單欄、工具欄、狀態(tài)欄等的主窗口所需的功能。上篇主要介紹了基本使用,創(chuàng)建窗口時都是繼承單個模塊,本章主要介紹下兩個模塊的結(jié)合使用。 1.我們先

    2024年04月08日
    瀏覽(22)
  • 98.qt qml-使用曲線圖綜合示例、支持多種鼠標交互、支持百萬數(shù)據(jù)顯示(已適配黑白風(fēng)格)

    98.qt qml-使用曲線圖綜合示例、支持多種鼠標交互、支持百萬數(shù)據(jù)顯示(已適配黑白風(fēng)格)

    在上章我們只是簡單實現(xiàn)了曲線圖和折線圖的顯示: 79.qt qml-如何在QML中使用QCustomPlot之曲線/折線示例(已適配黑白風(fēng)格)_qml 折線圖_諾謙的博客-CSDN博客 所以本章實現(xiàn)綜合示例、并添加多種功能如下所示: 詳細顯示:鼠標任意移動顯示具體值內(nèi)容 鼠標右擊:?彈出菜單欄,支持

    2024年02月05日
    瀏覽(34)
  • 【qml-1】第一次嘗試qml與c++交互

    【qml-1】第一次嘗試qml與c++交互

    【qml-2】嘗試一個有模式的qml彈窗-CSDN博客 目的是學(xué)習(xí)qml,因為看到很多qml的酷炫效果,想試一試。 看過網(wǎng)上一些代碼,qt提供的工具類好幾個,看著就暈。只想提煉一下,做個記錄。 我先整理了一套自己的想法:所謂交互,還是qt的信號槽。既然是前后端分離設(shè)計,就盡量

    2024年01月19日
    瀏覽(27)
  • QML與C++交互

    目錄 1 QML獲取C++的變量值 2 QML獲取C++創(chuàng)建的自定義對象 3 QML發(fā)送信號綁定C++端的槽 4 C++端發(fā)送信號綁定qml端槽 5 C++調(diào)用QML端函數(shù) 1 QML獲取C++的變量值 全局對象 上下文屬性 在qml中可全局直接使用test? 2 QML獲取C++創(chuàng)建的自定義對象 光標放在成員變量m_iValue和m_sString后面 Alt + En

    2024年02月12日
    瀏覽(20)
  • QML 與 Python 交互

    QML 與 Python 交互

    在 Qt 中,C++ 和 QML 交互一般有如下三種方法 上下文屬性:setContextProperty( ) 向引擎注冊類型:調(diào)用 qmlRegisterType( ) QML 擴展插件:雖然有很大的靈活性,但是用 Python 創(chuàng)建 QML 插件比較麻煩,所以這種方法不適用于 Python 上述代碼要結(jié)合 .py 文件進行理解,onClicked(發(fā)射 clicked 信

    2024年02月09日
    瀏覽(22)
  • qml與C++的交互

    qml與C++的交互

    qml端使用C++對象類型、qml端調(diào)用C++函數(shù)/c++端調(diào)用qml端函數(shù)、qml端發(fā)信號-連接C++端槽函數(shù)、C++端發(fā)信號-連接qml端函數(shù)等。 代碼資源下載: https://download.csdn.net/download/TianYanRen111/88779433 若無法下載,直接拷貝以下代碼測試即可。 main.cpp MyObject.h MyObject.cpp TestObject.h main.qml 參考文

    2024年01月25日
    瀏覽(21)
  • QML 與C++交互詳解

    QML 與C++交互詳解

    1.思維導(dǎo)圖 2.調(diào)用全局變量 在C++中直接定義全局變量,QML中能夠直接訪問。 使用engine.rootContext()-setContextProperty(\\\"WIDTH\\\",300),設(shè)置了一個全局變量WIDTH。 QML中直接訪問WIDTH。? 3.QML中調(diào)用C++類型 自定義一個C++類 MyObject?對象,有兩個成員變量m_value和m_str,分別對應(yīng)一個set和一個

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包