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;
            }

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

  • 相关阅读:
    bzoj1015星球大战(并查集+离线)
    bzoj1085骑士精神(搜索)
    bzoj1051受欢迎的牛(Tarjan)
    左偏树学习
    hdu1512 Monkey King(并查集,左偏堆)
    左偏树(模板)
    PAT (Basic Level) Practice (中文) 1079 延迟的回文数 (20分) (大数加法)
    PAT (Basic Level) Practice (中文) 1078 字符串压缩与解压 (20分) (字符转数字——栈存放)
    PAT (Basic Level) Practice (中文) 1077 互评成绩计算 (20分) (四舍五入保留整数)
    PAT (Basic Level) Practice (中文) 1076 Wifi密码 (15分)
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/9812545.html
Copyright © 2011-2022 走看看