Qt程序最小化运行,还原后窗体不刷新的问题解决
2012-11-13 09:54
417 查看
程序运行现象是这样的,一个包含有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;
}
}
判断问题原因是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;
}
}
相关文章推荐
- 怎样解决Qt编译出的程序运行时缺少libgcc_s_dw2-1.dll 文件的问题?
- VB.NET关闭窗体时最小化(附带解决.NET程序导致XP无法关机重启的问题)
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- QT 编译通过但是运行出现程序异常结束或者crashed的问题 在QT creator中最佳解决办法
- 分享iMX6Q自编QT程序运行报缺少库文件问题解决方法
- 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
- EF更新,数据库值变化,前台页面并不变化,刷新也不变化,重新运行程序则变化----开发中遇到的问题(已解决)
- pyqt关于窗体最小化后还原时界面不刷新的问题changeEvent
- MFC窗体程序作为服务运行注销登录后不能关机的问题解决
- C++/Qt程序编译运行时出现的问题以及解决办法
- 解决VS2012(update3)静态编译的Qt5.1.1程序无法运行的问题
- qt 在win8 win10下不能拖拽文件到程序的问题 终于找到答案了 因为把程序的权限设置太高了.解决方法,降低运行权限
- 解决 'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件 提示问题
- hadoop2.2.0配置eclipse运行wordcount程序问题及解决方法
- 解决acadia交叉编译后程序不能运行的问题。
- Qt Qt Quick QML 打包发布程序出现缺少dll,窗体空白,点击后无反应等发布不成功的终极解决方法
- 解决QT 编译后脱离编译器无法运行的问题
- 解决Asp.net 程序在 IIS 5.1 上运行不支持转换Decimal类型小数点的问题
- 解决vs2008下Qt程序发布为绿色版本中碰到的问题
- qt widget设置Qt::FramelessWindowHint和Qt::WA_TranslucentBackground, 会出现一个bug: 在最小化后还原时界面停止刷新