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