亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1235 | 回復(fù): 0
打印 上一主題 下一主題

關(guān)于Qvariant類--萬能的數(shù)據(jù)類型 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-10-09 21:45 |只看該作者 |倒序瀏覽

QVariant識別類型的注冊
QVariant為一個萬能的數(shù)據(jù)類型--可以作為許多類型互相之間進行自動轉(zhuǎn)換。將C++變?yōu)槿鯏?shù)據(jù)類型成為可能--也是許多控件中用戶定義數(shù)據(jù)的類型--因為無法預(yù)先知道用戶附加到控件的數(shù)據(jù)是什么類型。
而QT的Variant類型默認識別的類型都非常強制--只支持已注冊的類型--如何將一個自己定義的結(jié)構(gòu)或類賦予QVariant對象呢?
myStructor c;
QVariant v;
v.setValue (c); //將會錯誤--Qvariant還不認識myStructor呢。
首先必須先注冊myStructor--使用Q_DECLARE_METATYPE(myStructor)。
這是一個Macro--只能在全局中使用--否則出現(xiàn)錯誤。
然后就可以按一般的方法來賦值了--取值代碼為 v.value ();
例子:
將一個指針賦予QVariant--可能有需要將一個指針賦予樹型列表控件(QTreeWidget)中一個條目--點擊此條目獲取指針對數(shù)據(jù)進行處理--而無須通過查找來取得數(shù)據(jù)--縮短處理時間。
用int指針作為例子--QVariant不支持此類型必須先注冊。
ifndef __XXX__
define __XXX__
Q_DECLARE_METATYPE(int*);
...
endif
附帶記下如何在QTreeWidget控件中附加數(shù)據(jù)
增加Item
QTreeWidgetItem* newItem = new QTreeWidgetItem;
...增加newItem到treeWidget中...
int* itemVal = new int (123);
QVariant Var;
Var.setValue (testVal); // 已注冊了int*--正確編譯
newItem->setData (0, 0, Var); //newItem的第一列附加了Var--即指向itemVal的指針
                              //第二個參數(shù)為role角色的意思--我也不懂啥意思
點擊某個條目獲取對應(yīng)的數(shù)據(jù)
on_treeWidget_click ()
{
    ...取得選擇的條目-curItem...
    //Data()的參數(shù)和當(dāng)時設(shè)置數(shù)據(jù)的參數(shù)一樣,value()是取得var的數(shù)據(jù)
    int* ptr = curItem->Data (0, 0).value ();
    ...對ptr進行處理...
}

本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/94311/showart_2066612.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP