成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

去掉view項的焦點虛線框的方法memo

移動開發
我們曾經介紹過如何定義Android View類,Qt中的View類,如QListView, 在其項被選中時會有一個焦點虛線框表示焦點的位置。 不知道為啥,這個焦點虛線框很不招人待見, 筆者至今已經遇到多例想要去掉該虛線框的問題。

【51CTO編者按】我們曾經介紹過如何定義Android View類,Qt中的View類,如QListView, 在其項被選中時會有一個焦點虛線框表示焦點的位置。 不知道為啥,這個焦點虛線框很不招人待見, 筆者至今已經遇到多例想要去掉該虛線框的問題。

筆者能想到的有兩個方法, memo如下:

使用QItemDelegate子類

對QItemDelegate這個類筆者在此不多做討論, 詳情參考Qt文檔。 簡單來說,這個類可以控制view中的項的繪制方式,其中包括焦點虛線框的繪制。 而且焦點虛線框的繪制被封裝在一個虛函數中, 所以通過派生QItemDelegate就可以重新定義該函數的功能 — 如什么都不畫。 具體對應的虛函數是:http://qt.nokia.com/doc/4.6/qitemdelegate.html#drawFocus

有了QItemDelegate的子類后,我們需要調用QAbstractItemView的setItemDelegate方法將我們的item delegate與view關聯。 這個itemdelegate可以為view全局有效,或針對某個item, 也可以調用setItemDelegateForRow/Column設置針對行或列有效的delegate。

使用QStyle子類

這個方法的作用原理和第一種方法基本一致, 因為QItemDelegate的drawFocus函數調用QStyle的drawPrimitive虛函數去做實際的繪制, 所以如果我們重新定義這個繪制過程能達到同樣的效果。 drawPrimitive函數負責繪制非常基本的界面元素, 根據傳入的參數判斷需要繪制的元素, 具體到本例就是要針對PE_FrameFocusRect元素做特殊處理。 例子代碼如下:

  1. class NoFocusRectangleStyle: public QCommonStyle  
  2. {  
  3. public:  
  4. ...  
  5. void NoFocusRectangleStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option,  
  6. QPainter *painter, const QWidget *widget) const  
  7. {  
  8. if (QStyle::PE_FrameFocusRect == element && widget && widget->inherits("QListWidget"))  
  9. return;  
  10. else  
  11. QCommonStyle::drawPrimitive(element, option, painter,  
  12. widget);  
  13. }  
  14. };  
  15.  

一般我們派生QStyle不會傻乎乎地去派生這個基本的基類, 更常見的是派生與我們需要的風格最接近的類,一般是我們的程序默認使用的類。 我們的派生類可能非常簡單, 只重寫drawPrimitive這么一個函數, 幾行代碼搞定。 使用方法是調用QApplication::setStyle, 或者QWidget::setStyle, 前者將style效果應用到程序中的所有窗體,后者將效果限制在當前窗體。

小小memo, 希望對廣大Qter有所幫助。 如果大家有其他方法歡迎留言。

【編輯推薦】

  1. Qt程序進入等待睡眠的正確方法
  2. Qt開發:釋放線程中創建的QUdpSocket對象
  3. QTreeWidget設計解決沒有拖動項問題
  4. 在QT SDK下構建MeeGo Touch開發環境
  5. QtCreator:MeeGo開發程序入門手冊

原文地址:http://www.cuteqt.com/blog/?p=2008

責任編輯:佚名 來源: cuteqt
相關推薦

2017-12-28 14:51:01

AndroidView焦點

2016-12-12 09:58:47

AndroidAndroid Vie

2021-02-26 13:20:48

Shell空行Linux

2023-10-18 15:21:23

2012-01-06 09:30:44

繪圖線框圖開發

2024-06-19 08:32:13

2022-05-19 15:59:23

組件焦點鴻蒙

2020-05-12 10:32:25

Python列表重復

2009-09-08 16:22:27

c# listBox

2017-05-18 08:54:39

2022-09-16 12:30:23

新指令項目Vue3

2015-12-08 13:25:39

2019-12-18 16:17:29

WindowsWindows 10軟件

2011-05-18 16:26:22

線框

2017-10-31 11:55:46

sklearn數據挖掘自動化

2020-04-16 10:46:34

云計算多云架構數據中心

2021-03-16 10:00:40

JavaScript用戶登錄表單JavaScript基

2021-10-19 09:31:19

Javascript 登錄表單前端

2024-12-26 16:13:53

JavaScript開發表單

2019-10-31 10:16:06

數據Python開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久久冷 | 久久久国产一区二区三区四区小说 | 中文字幕福利视频 | 久久网站免费视频 | 欧美成人免费在线视频 | 精品国产乱码久久久久久影片 | 日韩中文在线观看 | 国产精品久久久久久婷婷天堂 | 国产精品五区 | 日韩欧美在线免费观看 | 在线免费观看视频黄 | 亚洲一区中文字幕在线观看 | 一级毛片播放 | 免费a网| 麻豆久久精品 | 欧美黑人国产人伦爽爽爽 | 亚洲444kkkk在线观看最新 | 午夜影视| 中文天堂在线一区 | 操久久| 日韩三 | 91久久国产综合久久91精品网站 | 欧美国产视频一区二区 | 成人免费一级 | 91精品国产一区二区三区 | 精品无码三级在线观看视频 | 欧美精品在线播放 | 天天射色综合 | 亚洲午夜av | 青青草av在线播放 | 人人九九 | 新超碰97| 欧美久久一区二区三区 | 成人在线视频看看 | www.日韩| 三级成人片 | 欧美精品综合在线 | 综合在线视频 | a毛片视频网站 | 二区视频 | 先锋影音资源网站 |