免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

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

一、螞蟻線

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

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

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

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

二、效果展示

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

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

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

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

1、繪制區(qū)域

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

2、定時器

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

3、繪制策略

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

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)建站m.newbst.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

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

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

廣告

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

外貿(mào)網(wǎng)站制作