自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

QTreeWidget設(shè)計解決沒有拖動項問題

移動開發(fā)
設(shè)置QTreeWidget的dragDropMode為InternalMove,然后拖動項,希望把dropped的項設(shè)為current。但是發(fā)現(xiàn)Qt里竟然沒有直接可用的方法或者signal可以得到這些信息。本文告訴您運用一些小技巧來實現(xiàn)QTreeWidget設(shè)計解決沒有拖動項問題。

前不久諾基亞發(fā)布了Qt 4.7,新版本的Qt包括了全新的QML技術(shù):一個先進(jìn)的描述性編程語言,以及對于性能的提升。最近總有人提了這個問題:設(shè)置QTreeWidget的dragDropMode為InternalMove,然后拖動項,希望把dropped的項設(shè)為current。個人認(rèn)為這是個比較基本的需求,但研究了一下,發(fā)現(xiàn)Qt里竟然沒有直接可用的方法或者signal可以得到這些信息。進(jìn)一步研究,實現(xiàn)是可以實現(xiàn)的,有點小繁瑣,這里列出來,希望對其他Qt開發(fā)者有所幫助。

在你拖拽item的時候首先需要選中item, 所以我們可以通過響應(yīng)currentItemChanged信號得到被拖動的項。 當(dāng)然事情沒那么簡單。因為currentItemChanged的信號不光是拖拽的時候會發(fā)出, 還有可能是普通的鼠標(biāo)點擊也會觸發(fā)這個信號,而且單從參數(shù)的內(nèi)容或者用簡單的API是區(qū)分不出這兩種情況的。

為了判斷這個信號是不是在拖拽期間發(fā)生的,可以重寫 dropEvent虛函數(shù)。在拖拽發(fā)生時,currentItemChanged的信號是在dropEvent處理過程中發(fā)出。所以我們可以在進(jìn)入dropEvent時設(shè)置一個flag, 函數(shù)結(jié)束時重置該flag。 然后在currentItemChanged的槽里根據(jù)flag的值確定拖拽動作是否發(fā)生, 進(jìn)而參數(shù)中的prev就是我們需要的被拖動的項。

相關(guān)的代碼列舉重要部分如下:

  1. tw = new TreeWidget(this, 10,2); // customized treewidget class  
  2. tw->setDragDropMode(QAbstractItemView::InternalMove);//drag drop  
  3. connect(tw, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), this, SLOT(doCurrentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)));  
  4.  
  5.  
  6. void TreeWidget::dropEvent(QDropEvent*event)  
  7. {  
  8. qWarning() << "begin drop event....";//在這里設(shè)置標(biāo)志  
  9. QTreeWidget::dropEvent(event);  
  10. qWarning() << "end drop event....";//在這里重置標(biāo)志  
  11. }  
  12.  
  13.  
  14. void MainWin::doCurrentItemChanged(QTreeWidgetItem* cur, QTreeWidgetItem* prev)  
  15. {  
  16. if( prev)//在這里判斷標(biāo)志, prev即是被拖拽的項  
  17. qWarning() << "previous:" << prev->text(0);  
  18. }  

【編輯推薦】

  1. 諾基亞發(fā)布開發(fā)框架Qt4.7 推出快速UI工具
  2. 在QT SDK下構(gòu)建MeeGo Touch開發(fā)環(huán)境
  3. 在Symbian應(yīng)用程序Widget開發(fā)使用Qt加載和縮放圖片
  4. QtCreator:MeeGo開發(fā)程序入門手冊
責(zé)任編輯:佚名 來源: cuteqt
相關(guān)推薦

2009-06-06 19:07:44

java壓縮文件

2024-08-08 08:19:03

2022-09-19 06:25:14

設(shè)計模式GoF

2010-09-28 08:49:36

Java移動開發(fā)

2019-03-15 11:07:35

華為云

2010-04-20 11:08:33

Unix操作系統(tǒng)

2024-04-29 08:58:44

2023-01-04 10:24:42

2010-09-07 09:50:35

DIVCSS

2011-05-12 13:34:57

SQL Server

2010-08-17 11:35:46

DIV CSS

2022-12-27 08:43:18

系統(tǒng)思維設(shè)計思維創(chuàng)新

2009-07-23 16:40:02

ASP.NET在線客服

2017-03-28 13:21:50

互聯(lián)網(wǎng)

2012-09-06 16:17:09

Ubuntu 12.0Windows 7

2018-10-31 14:36:37

無人駕駛卡爾索普交通

2019-08-29 10:41:26

物聯(lián)網(wǎng)數(shù)據(jù)網(wǎng)絡(luò)

2011-05-19 14:16:29

網(wǎng)頁設(shè)計

2022-09-02 16:07:02

團(tuán)隊問題

2022-12-31 18:13:10

點贊
收藏

51CTO技術(shù)棧公眾號