欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++與QML進(jìn)行數(shù)據(jù)交互實(shí)現(xiàn)方式介紹

 更新時(shí)間:2022年09月09日 17:07:57   作者:wjhx  
迫于無(wú)奈開(kāi)始寫(xiě)android的程序,以前使用QWidget的方式試過(guò),雖然界面可以實(shí)現(xiàn),但是最后調(diào)用攝像頭時(shí),未能成功,再?zèng)]有繼續(xù)。這幾天開(kāi)始使用qml進(jìn)行嘗試,在使用的過(guò)程中,其中的一個(gè)難點(diǎn),就是在qml與c++中數(shù)據(jù)的交互

我所使用的方式,是通過(guò)C++調(diào)用遠(yuǎn)端的webservice,再次數(shù)據(jù)送到qml端,不說(shuō)原理了,直接上代碼的實(shí)現(xiàn)過(guò)程。需要明白一點(diǎn):qml不接受QList的類(lèi)方式,所以使用了QList<QObject*>。大致分為四步,按需要看:

一、定義可交互的類(lèi)

可以IDE生成中選擇基類(lèi)為QObject完成即可,基本代碼自動(dòng)生成。

h:

#ifndef TEST_H
#define TEST_H
#include <QObject>
class test : public QObject
{
    Q_OBJECT
public:
    explicit test(QObject *parent = nullptr);
signals:
public slots:
};
#endif // TEST_H

cpp:

#include "test.h"
test::test(QObject *parent) : QObject(parent)
{
}

以上文件中,最重要的兩點(diǎn):繼承自QObject以及包含Q_OBJECT均完成。

定義屬性時(shí),需要寫(xiě)在Q_OBJECT下面,沒(méi)有分號(hào),可以使用快捷鍵對(duì)相關(guān)的代碼進(jìn)行自動(dòng)生成,演示一個(gè)字段屬性,完成后的代碼如下,字段名為name:

#ifndef TEST_H
#define TEST_H
#include <QObject>
class test : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString name READ name WRITE setName)
public:
    explicit test(QObject *parent = nullptr);
    QString name() const
    {
        return m_name;
    }
signals:
public slots:
    void setName(QString name)
    {
        m_name = name;
    }
private:
    QString m_name;
};
#endif // TEST_H

在自動(dòng)生成數(shù)據(jù)時(shí),最好先寫(xiě)入一個(gè)private節(jié),這個(gè)自動(dòng)生成的時(shí)候沒(méi)有,定義后,使用的私有變量會(huì)放在這里,否則會(huì)跟在public slots下,反正是最下面了。

二、數(shù)據(jù)操作類(lèi)

數(shù)據(jù)操作類(lèi)的生成方法與上步類(lèi)似,不同的是需要定義操作的方法,以返回?cái)?shù)據(jù)的為數(shù)據(jù)集為例,在public中定義一個(gè)方法,類(lèi)名定義為c_test:

Q_INVOKABLE QList<QObject*> getData() const;

如果返回的只是一個(gè)單值,則這樣:

Q_INVOKABLE QString getData() const;

賦值:

QList<QObject*> c_test::getData() const
{
    QList<QObject*> r_list;
    ...
    test *t1 = new test;
    t1.setName("...");
    r_list.append(t1);
    ...
    return r_list;
 }

三、注冊(cè)

注冊(cè)是指將C++的類(lèi)注冊(cè)到qml中供調(diào)用,貌似有兩種方式,我使用的是setContextProperty。在main中,connect前:

engine.rootContext()->setContextProperty("c_test", new c_test);

經(jīng)測(cè)試,在1中所定義的類(lèi),不需要注冊(cè)。

四、qml調(diào)用

將值給ListMode時(shí),需要進(jìn)行一次迭代。

var data = c_test.getData()
_model.clear()
for(var i=0;i<data.length;i++){
	_model.append(data[i]);
}

如上代碼中的c_test.getData()就是使用注冊(cè)的類(lèi)進(jìn)行的操作。

此處迭代是必須的,不能直接給model。

在qml中顯示:

Text{
    text: name
    }

這里所使用的name,就是在一的類(lèi)里所定義的屬性。

這個(gè)一直做為攔路虎的東西,在實(shí)現(xiàn)后發(fā)現(xiàn)也并不是很麻煩。以上方式測(cè)試通過(guò),熟練了一種之后,如果需要可以再看其它,應(yīng)該就簡(jiǎn)單了吧。

到此這篇關(guān)于C++與QML進(jìn)行數(shù)據(jù)交互實(shí)現(xiàn)方式介紹的文章就介紹到這了,更多相關(guān)C++與QML數(shù)據(jù)交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言 數(shù)組指針詳解及示例代碼

    C語(yǔ)言 數(shù)組指針詳解及示例代碼

    本文主要介紹C語(yǔ)言 數(shù)組指針,這里整理了相關(guān)資料并附示例待會(huì)及實(shí)現(xiàn)結(jié)果,幫助大家學(xué)習(xí)C語(yǔ)言中指針的知識(shí),有需要學(xué)習(xí)此部分內(nèi)容的朋友可以參考下
    2016-08-08
  • 詳談C++何時(shí)需要定義賦值/復(fù)制構(gòu)造函數(shù)

    詳談C++何時(shí)需要定義賦值/復(fù)制構(gòu)造函數(shù)

    下面小編就為大家?guī)?lái)一篇詳談C++何時(shí)需要定義賦值/復(fù)制構(gòu)造函數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)

    C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(201.數(shù)字范圍位相與),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言實(shí)現(xiàn)的順序表功能完整實(shí)例

    C語(yǔ)言實(shí)現(xiàn)的順序表功能完整實(shí)例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)的順序表功能,結(jié)合完整實(shí)例形式分析了C語(yǔ)言順序表的創(chuàng)建、添加、刪除、排序、合并等相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • C++中的數(shù)據(jù)對(duì)齊示例詳解

    C++中的數(shù)據(jù)對(duì)齊示例詳解

    這篇文章主要介紹了C++中數(shù)據(jù)對(duì)齊的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • QT輸入框輸入限制整理(正則表達(dá)式限制)

    QT輸入框輸入限制整理(正則表達(dá)式限制)

    我們有時(shí)需要限制文本框輸入內(nèi)容的類(lèi)型,下面這篇文章主要給大家介紹了關(guān)于QT輸入框輸入限制的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-04-04
  • 利用Qt實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)報(bào)文大小端數(shù)據(jù)的收發(fā)

    利用Qt實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)報(bào)文大小端數(shù)據(jù)的收發(fā)

    大小端(Endianness)是計(jì)算機(jī)體系結(jié)構(gòu)的一個(gè)術(shù)語(yǔ),它描述了多字節(jié)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)順序,下面我們來(lái)看看如何利用Qt實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)報(bào)文大小端數(shù)據(jù)的收發(fā)吧
    2024-11-11
  • C語(yǔ)言容易被忽視的函數(shù)設(shè)計(jì)原則基礎(chǔ)

    C語(yǔ)言容易被忽視的函數(shù)設(shè)計(jì)原則基礎(chǔ)

    C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言.那么C語(yǔ)言函數(shù)設(shè)計(jì)的一般原則和技巧都是怎樣的呢,下面帶你了解
    2022-04-04
  • 詳解C++17中if和switch語(yǔ)句的新特性

    詳解C++17中if和switch語(yǔ)句的新特性

    這篇文章主要為大家詳細(xì)介紹了C++17中if和switch語(yǔ)句的新特性的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C++中賦值初始化和直接初始化的區(qū)別

    C++中賦值初始化和直接初始化的區(qū)別

    賦值初始化和直接初始化雖然常常產(chǎn)生相同的結(jié)果,但在某些情況下它們有不同的含義和行為,本文主要介紹了C++中賦值初始化和直接初始化的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04

最新評(píng)論