久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

QHeaderView::paintSection 做了什么,以至于我在之前或

What does QHeaderView::paintSection do such that all I do to the painter before or after is ignored(QHeaderView::paintSection 做了什么,以至于我在之前或之后對畫家所做的一切都被忽略了) - IT屋-程序員軟件開發技
本文介紹了QHeaderView::paintSection 做了什么,以至于我在之前或之后對畫家所做的一切都被忽略了的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

這個問題是這篇文章 是不同的,雖然看起來與 這個.

This question is further development of this post and is different, though may seem similar as this one.

我正在嘗試重新實現 QHeaderView::paintSection,以便從模型返回的背景得到尊重.我試著這樣做

I am trying to reimplement QHeaderView::paintSection, so that the background returned from the model would be honored. I tried to do this

void Header::paintSection(QPainter * painter, const QRect & rect, int logicalIndex) const
{
    QVariant bg = model()->headerData(logicalIndex, Qt::Horizontal, Qt::BackgroundRole);
    // try before
    if(bg.isValid())                // workaround for Qt bug https://bugreports.qt.io/browse/QTBUG-46216
        painter->fillRect(rect, bg.value<QBrush>());             
    QHeaderView::paintSection(painter, rect, logicalIndex);
    // try after
    if(bg.isValid())                // workaround for Qt bug https://bugreports.qt.io/browse/QTBUG-46216
        painter->fillRect(rect, bg.value<QBrush>());             
}

但是,它不起作用 - 如果我調用 QHeaderView::paintSection ,我用畫家繪制的任何東西都不可見(我也嘗試繪制對角線).如果我刪除 QHeaderView::paintSection 調用,線條和背景將可見.在 QHeaderView::paintSection 之前和之后調用 fillRect 沒有任何區別.

However, it didn't work - if I make QHeaderView::paintSection call, nothing I draw with the painter is visible (I also tried drawing a diagonal line). If I remove QHeaderView::paintSection call, the line and the background will be visible. Making the fillRect call before vs. after the QHeaderView::paintSection doesn't make any difference.

我想知道,QHeaderView::paintSection 是什么讓我無法在它上面畫一些東西.以及是否有一種方法可以在不重新實現 QHeaderView::paintSection 所做的一切的情況下克服它?

I wonder, what is it that QHeaderView::paintSection does that makes it impossible for me to draw something on top of it. And whether there is a way to overcome it without reimplementing everythning what QHeaderView::paintSection does?

我需要做的就是為某個單元格添加某種陰影 - 我仍然希望單元格中的所有內容(文本、圖標、漸變背景等)都按照現在的方式繪制...

All I need to do is to add a certain shade to a certain cell - I still want everything in the cell (text, icons, gradient background etc.) to be painted as it is now...

推薦答案

很明顯為什么第一個 fillRect 不起作用.您在 paintSection 之前繪制的所有內容都將被基礎繪制覆蓋.

It is obvious why the first fillRect doesn't work. Everything that you paint before paintSection is overridden by base painting.

第二個調用更有趣.

通常所有的繪制方法都會保留 painter 狀態.這意味著當你調用 paint 時,它看起來像畫家狀態沒有改變.

Usually all paint methods preserves painter state. It means that when you call paint it looks like the painter state hasn't been changed.

盡管如此,QHeaderView::paintSection 破壞了畫家的狀態.

Nevertheless QHeaderView::paintSection spoils the painter state.

要繞過這個問題,您需要自己保存和恢復狀態:

To bypass the issue you need to save and restore the state by yourself:

void Header::paintSection(QPainter * painter, const QRect & rect, int logicalIndex) const
{
    QVariant bg = model()->headerData(logicalIndex, Qt::Horizontal, Qt::BackgroundRole);
    painter->save();
    QHeaderView::paintSection(painter, rect, logicalIndex);
    painter->restore();
    if(bg.isValid())               
        painter->fillRect(rect, bg.value<QBrush>());             
}

這篇關于QHeaderView::paintSection 做了什么,以至于我在之前或之后對畫家所做的一切都被忽略了的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 四虎永久免费在线 | 欧美精品一二三区 | 成人免费观看男女羞羞视频 | 国产在线中文字幕 | 久久精品久久精品久久精品 | 先锋影音资源网站 | 99国内精品 | 永久免费在线观看 | 亚洲视频一区在线观看 | 成人一区二区在线 | 欧美一级毛片免费观看 | 久久免费国产 | 亚洲精品乱码久久久久久按摩观 | 综合久久99| 一区二区精品 | 久久av网站 | 男人天堂久久久 | 中文字幕在线观看视频一区 | www.日韩 | 99免费看| 久久一区二区三区四区五区 | 国产一级片久久久 | 日韩小视频 | 一级a性色生活片久久毛片 一级特黄a大片 | 亚洲欧美在线一区 | 欧美高清视频 | 99久久精品免费看国产免费软件 | 精品久久久久久久 | 亚洲在线日韩 | 波霸ol一区二区 | 精品国产一区二区三区久久 | www.亚洲免费 | 欧美精品一区二区三区蜜桃视频 | 日韩精品一区二区三区在线播放 | 亚洲视频一区在线观看 | 成人免费一区二区三区视频网站 | 国产日韩在线观看一区 | 欧美日韩精品一区 | 亚洲精品视频在线观看视频 | 91精品国产综合久久久久久漫画 | 久久精品亚洲 |