日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

QTreeWidgetItem添加自定义数据

發(fā)布時(shí)間:2023/12/18 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QTreeWidgetItem添加自定义数据 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

QTreeWidgetItem添加自定義數(shù)據(jù)

本文簡(jiǎn)要介紹一個(gè)知識(shí)點(diǎn),如題所示,就是如何給QTreeWidgetItem添加自定義數(shù)據(jù)。兩種方法:

方法一

數(shù)據(jù)可以是任意類型(Variant類型),如果不是基本數(shù)據(jù)類型的數(shù)據(jù),則需要定義一個(gè)結(jié)構(gòu)體表示數(shù)據(jù)類型。這里這樣定義:

struct User:public QObjectUserData {QString imgpath;int itemtype; }; Q_DECLARE_METATYPE(User)QTreeWidget *tree = new QTreeWidget; tree->setColumnCount(1); tree->setHeaderLabel("標(biāo)題");QTreeWidgetItem *item = new QTreeWidgetItem(0); item->setText(0,"hello world!"); User mydata; mydata.imgpath = ":/new/picture/images/pc.png"; mydata.itemtype = 1;//寫入數(shù)據(jù) item->setData(0,Qt::UserRole+1,QVariant::fromValue(mydata));//讀取數(shù)據(jù) User data = item->data(0,Qt::UserRole+1).value<User>(); qDebug() << data.imgpath << data.itemtype;

方法二

  • 繼承QTreeWidgetItem,寫一個(gè)類把信息(自定義數(shù)據(jù))存放在里面,假設(shè)該類為MyQTreeItem。
    創(chuàng)建一個(gè)該類的對(duì)象:myQTreeItem和new 一個(gè)QTreeWidgetItem對(duì)象sysQTreeItem,然后執(zhí)行tree->setItemWidget(sysQTreeItem ,0,(QWidget*)myQTreeItem); 0表示第1欄。

  • 當(dāng)樹(shù)的節(jié)點(diǎn)被點(diǎn)擊后,獲取樹(shù)的當(dāng)前QTreeWidgetItem(假設(shè)這里是m_pCurrentItem),然后
    MyQTreeItem* myItem = (MyQTreeItem*)tree->itemWidget(m_pCurrentItem,0);獲取到myItem后即可讀取數(shù)據(jù)了。
    qDebug() << myItem->m_sImgPath << myItem->m_iItemType;

  • class MyQTreeItem:public QTreeWidgetItem {Q_OBJECTpublic:MyQTreeItem(QWidget *parent = 0);public:QString m_sImgPath;int m_iItemType; }//前期關(guān)聯(lián)數(shù)據(jù) MyQTreeItem* myQTreeItem; myQTreeItem->m_sImgPath = ":/new/picture/images/pc.png"; myQTreeItem->m_iItemType = 1;QTreeWidgetItem* sysQTreeItem = new QTreeWidgetItem(0);QTreeWidget* tree = new QTreeWidget(); tree->setItemWidget(sysQTreeItem ,0,(QWidget*)myQTreeItem);//后期讀取數(shù)據(jù) MyQTreeItem* myItem = (MyQTreeItem*)tree->itemWidget(m_pCurrentItem,0); qDebug() << myItem->m_sImgPath << myItem->m_iItemType;


    作者公眾號(hào):IT平頭哥。分享工作中遇到的問(wèn)題,開(kāi)卷有益,歡迎來(lái)撩~

    總結(jié)

    以上是生活随笔為你收集整理的QTreeWidgetItem添加自定义数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。