您的位置:首页 > 编程语言 > Qt开发

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐