中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Qt學(xué)習(xí)教程之表格控件螞蟻線詳解-創(chuàng)新互聯(lián)

一、螞蟻線

摘自互動(dòng)百科:在圖像影像軟件中表示選區(qū)的動(dòng)態(tài)虛線,因?yàn)樘摼€閃爍的樣子像是一群螞蟻在跑,所以俗稱螞蟻線。在Poshop,After Effect等軟件中比較常見(jiàn)。

創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括周村網(wǎng)站建設(shè)、周村網(wǎng)站制作、周村網(wǎng)頁(yè)制作以及周村網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,周村網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到周村省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

背景:用過(guò)excel的同學(xué)都知道,當(dāng)對(duì)單元格進(jìn)行復(fù)制時(shí),單元格周圍就會(huì)出現(xiàn)一個(gè)跑動(dòng)的矩形框,這個(gè)矩形框就被稱為螞蟻線。通過(guò)設(shè)置螞蟻線的線型和調(diào)整控件有效刷新次數(shù)我們可以得到不同的跑動(dòng)效果,這是一個(gè)非常有意思的現(xiàn)象。

本文將給大家詳細(xì)介紹關(guān)于Qt表格控件螞蟻線的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

二、效果展示

如下圖就是螞蟻線的效果截圖,單擊單元格時(shí),會(huì)繪制一個(gè)2個(gè)像素寬的外框;當(dāng)雙擊某個(gè)單元格時(shí),就會(huì)產(chǎn)生螞蟻線,螞蟻線的線型和跑動(dòng)速度都可以定制。文末會(huì)放出演示代碼下載鏈接。

Qt學(xué)習(xí)教程之表格控件螞蟻線詳解

三、實(shí)現(xiàn)

說(shuō)到Qt繪圖,肯定離不開paintEvent函數(shù),而且大多數(shù)的功能都可以通過(guò)重寫paintEvent函數(shù)來(lái)完成。凡是總有例外,當(dāng)控件本身就比較復(fù)雜,或者只需要重寫控件某一部分時(shí),就需要重寫一些其他東西來(lái)完成需求,比如表格螞蟻線繪制就屬于這個(gè)例外,當(dāng)我們重寫表格時(shí)就不能重寫paintEvent函數(shù),如果重寫這個(gè)函數(shù)那么表格的所有東西就需要我們自己去繪制,一個(gè)好的辦法就是重寫QStyledItemDelegate代理類,通過(guò)這個(gè)類我們可以定制表格控件的每一個(gè)項(xiàng)。下面我們就來(lái)仔細(xì)的分析下基于重寫代理類的實(shí)現(xiàn)細(xì)節(jié),理解下面4個(gè)實(shí)現(xiàn)維度后螞蟻線基本就完成了。

1、繪制區(qū)域

螞蟻線是針對(duì)表格項(xiàng)來(lái)進(jìn)行繪制的,因此首先想到的就是刷新表格某一項(xiàng)來(lái)進(jìn)行提高繪制效率,通過(guò)閱讀Qt源碼,找到QTableView::paintEvent函數(shù)中對(duì)表格項(xiàng)進(jìn)行了繪制,主要是通過(guò)調(diào)用QTableViewPrivate::drawCell函數(shù)來(lái)進(jìn)行每個(gè)單元格的繪制,該函數(shù)最后一行是通過(guò)QStyledItemDelegate類的paint方法來(lái)進(jìn)行繪制,與第三節(jié)第一段的說(shuō)明對(duì)應(yīng)起來(lái)。因此如果想進(jìn)行局部刷新看來(lái)困難比較大,因此最終決定每次刷新螞蟻線時(shí)對(duì)整個(gè)表格進(jìn)行刷新。

2、定時(shí)器

定時(shí)刷新,顧名思義就是我們需要一個(gè)定時(shí)器,定時(shí)刷新表格控件。首先想到的是我們自己維護(hù)一個(gè)QTimer,通過(guò)QTimer::timeout信號(hào)來(lái)刷新表格;除此之外QObject類已經(jīng)幫我們提供了一個(gè)timerEvent回調(diào)函數(shù),我們只需要通過(guò)startTime接口來(lái)啟動(dòng)一個(gè)定時(shí)器,timerEvent函數(shù)就會(huì)被定時(shí)調(diào)用,當(dāng)然了這個(gè)回調(diào)接口同時(shí)支持多個(gè)定時(shí)器,用timeID進(jìn)行區(qū)分每個(gè)定時(shí)器。

3、繪制策略

當(dāng)選擇一個(gè)單元格時(shí)(當(dāng)前單元格發(fā)現(xiàn)變化),繪制矩形框;繪制矩形框比較簡(jiǎn)單,這塊需要注意一個(gè)地方,就是當(dāng)繪制第一列的時(shí)候矩形框可能會(huì)跑出當(dāng)前項(xiàng),導(dǎo)致矩形框顯示不全。螞蟻線繪制時(shí)也存在這個(gè)問(wèn)題。

void GMPFileItemDelegate::DrawBorderRect( QPainter * painter, const QRect & rect, bool firstColumn ) const
{
 painter->save();
 QPen pen = painter->pen();
 pen.setWidth(2);
 pen.setColor(QColor(0, 132, 255));
 painter->setPen(pen);
 
 QRect tmpRect = rect;
 if (firstColumn)
 {
 tmpRect.adjust(2, 1, -1, -1);
 }
 else
 {
 tmpRect.adjust(1, 1, -1, -1);
 }
 painter->drawRect(tmpRect);
 painter->restore();
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.rwnh.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:Qt學(xué)習(xí)教程之表格控件螞蟻線詳解-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.rwnh.cn/article12/dciodc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)網(wǎng)站策劃、品牌網(wǎng)站制作、Google自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
河北区| 遂宁市| 泰兴市| 正定县| 周宁县| 德清县| 灌南县| 青河县| 呼伦贝尔市| 沾化县| 白城市| 互助| 姜堰市| 淮南市| 古交市| 泰来县| 红河县| 水富县| 赣榆县| 沅陵县| 喜德县| 聂拉木县| 怀化市| 永春县| 大宁县| 镇康县| 灵川县| 达尔| 汪清县| 如东县| 丘北县| 邳州市| 台北县| 赫章县| 休宁县| 德安县| 金门县| 葫芦岛市| 卢龙县| 米泉市| 城口县|