QTreeWidgetItem添加自定义数据
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;
作者公眾號(hào):IT平頭哥。分享工作中遇到的問(wèn)題,開(kāi)卷有益,歡迎來(lái)撩~
總結(jié)
以上是生活随笔為你收集整理的QTreeWidgetItem添加自定义数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 测试测试
- 下一篇: s3c2440移植MQTT