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

去掉view項的焦點(diǎn)虛線框的方法memo

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

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

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

使用QItemDelegate子類

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

有了QItemDelegate的子類后,我們需要調(diào)用QAbstractItemView的setItemDelegate方法將我們的item delegate與view關(guān)聯(lián)。 這個itemdelegate可以為view全局有效,或針對某個item, 也可以調(diào)用setItemDelegateForRow/Column設(shè)置針對行或列有效的delegate。

使用QStyle子類

這個方法的作用原理和第一種方法基本一致, 因為QItemDelegate的drawFocus函數(shù)調(diào)用QStyle的drawPrimitive虛函數(shù)去做實際的繪制, 所以如果我們重新定義這個繪制過程能達(dá)到同樣的效果。 drawPrimitive函數(shù)負(fù)責(zé)繪制非?;镜慕缑嬖兀?根據(jù)傳入的參數(shù)判斷需要繪制的元素, 具體到本例就是要針對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不會傻乎乎地去派生這個基本的基類, 更常見的是派生與我們需要的風(fēng)格最接近的類,一般是我們的程序默認(rèn)使用的類。 我們的派生類可能非常簡單, 只重寫drawPrimitive這么一個函數(shù), 幾行代碼搞定。 使用方法是調(diào)用QApplication::setStyle, 或者QWidget::setStyle, 前者將style效果應(yīng)用到程序中的所有窗體,后者將效果限制在當(dāng)前窗體。

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

【編輯推薦】

  1. Qt程序進(jìn)入等待睡眠的正確方法
  2. Qt開發(fā):釋放線程中創(chuàng)建的QUdpSocket對象
  3. QTreeWidget設(shè)計解決沒有拖動項問題
  4. 在QT SDK下構(gòu)建MeeGo Touch開發(fā)環(huán)境
  5. QtCreator:MeeGo開發(fā)程序入門手冊

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

責(zé)任編輯:佚名 來源: cuteqt
相關(guān)推薦

2017-12-28 14:51:01

AndroidView焦點(diǎn)

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

繪圖線框圖開發(fā)

2024-06-19 08:32:13

2022-05-19 15:59:23

組件焦點(diǎn)鴻蒙

2017-05-18 08:54:39

2020-05-12 10:32:25

Python列表重復(fù)

2009-09-08 16:22:27

c# listBox

2022-09-16 12:30:23

新指令項目Vue3

2019-12-18 16:17:29

WindowsWindows 10軟件

2011-05-18 16:26:22

線框

2015-12-08 13:25:39

2017-10-31 11:55:46

sklearn數(shù)據(jù)挖掘自動化

2019-10-31 10:16:06

數(shù)據(jù)Python開發(fā)

2020-04-16 10:46:34

云計算多云架構(gòu)數(shù)據(jù)中心

2021-04-14 10:59:28

JavaScript 前端this

2013-10-30 17:10:29

設(shè)計師工具

2012-03-26 10:45:00

虛擬化VMware View數(shù)字證書
點(diǎn)贊
收藏

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