qt窗口最小化之后無法打開


轉自: https://blog.csdn.net/qiangzi4646/article/details/79743604

http://www.cnblogs.com/lingdhox/p/3316910.html

https://bbs.csdn.net/topics/391955966

http://www.cnblogs.com/lingdhox/p/3316910.html

https://blog.csdn.net/mengxinmoses/article/details/8177171 

方法1 重寫changeEvent
//頭文件申明
void changeEvent(QEvent *e);

//函數實現
void myWidgetWindow::changeEvent(QEvent *e)
{
    switch (e->type()) 
    {
    case QEvent::WindowStateChange:
        {
            this->update();
            this->repaint();
            e->ignore();
            break;
        }
    default:
        break;
    }
}

 

 

方法2 重寫showEvent
//頭文件申明
void showEvent(QShowEvent *e);

//函數實現
void myWidgetWindow::showEvent(QShowEvent *e)
{
    this->setAttribute(Qt::WA_Mapped);
    QWidget::showEvent(e);
}

  

對無邊框的QT窗體設置點擊任務欄按鈕最小化和還原事件

this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint);

 

--------------------------------------------------------------------------------------------------------------------------------------------------------

程序運行現象是這樣的,一個包含有QTableWidget的窗體,Item上使用setCellWidget方法嵌入的自定義的widget,上面顯示下載進度條、按鈕等等。當下載任務進行的時候,進度條是動態顯示完成百分比的,此時將其最小化。當任務完成后,重新還原該窗體,進度條還保留在最小化時的程度,直到其它列表操作后才瞬間刷新到應該的樣子。

判斷問題原因是Qt窗體在最小化並沒有進行實際上的update操作,直到它show出來后才進行刷新的,這樣能夠比較節省資源,提高運行效率和速度。本例中窗體在還原時雖然刷新,但是其中的QTableWidget卻沒有收到update的操作,這樣就導致了顯示內容不正常。 解決的辦法是在Qt窗體中處理changeEvent(QEvent *e),當e->type()== QEvent::WindowStateChange 時控制QTableWidget刷新界面。

 

例如:

void CloudStore::changeEvent(QEvent *e)
{
 qDebug()<< "CloudStore::changeEvent()";
  switch (e->type()) {

        case QEvent::WindowStateChange:

        if(m_usualAppTable){                          //m_usualAppTable 即為QtableWidget
          m_usualAppTable->update();
        }
   }

       this->repaint();
      e->ignore();
  default:
            break;
        }

}
-------------------------------------------------------------------------------------------

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM