zoukankan      html  css  js  c++  java
  • 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;
            }

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

  • 相关阅读:
    Event notifications
    twobin博客样式
    Http协议
    ASP.NET Web API自身对CORS的支持: CORS授权检验的实施
    理解计算机系统3
    游标-Oracle游标汇总
    Oracle10g 回收站及彻底删除table : drop table xx purge
    ora-01031:insufficient privileges
    &&运算符和||运算符的优先级问题 专题
    oracle connect by 和start with
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/9812545.html
Copyright © 2011-2022 走看看