如何从QDialog刷新/更新/重绘QMainWindow?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从QDialog刷新/更新/重绘QMainWindow?相关的知识,希望对你有一定的参考价值。
我有一个QDialog,它有一些设置,在此基础上,QTreeView或整个QMainWindow需要更新或重新绘制或刷新。
QDialog有两个按钮:
- 应用:此按钮需要将设置应用于QMainWindow,例如QTreeView列的颜色。这是一个例子,在QMainWindow上有更多项目,如QTableView等,单击此按钮也需要更新。
- 关闭:此按钮隐藏QDialog。
我已经尝试在单击Apply按钮时在QMainWindow上调用repaint / update函数,但没有任何效果。
void MainWindow::refresh()
{
setUpdatesEnabled(true);
setWindowModified(true);
repaint();
update();
show();
}
但是,在单击关闭按钮(在QDialog上调用hide)时,QMainWindow上的整个视图会更新/重新绘制。
我需要在Apply按钮上做同样的事情。
怎么做到这一点? QDialog-> hide在QMainWindow上调用的SLOT是什么?
答案
如果您的颜色基于Qt roles,您必须刷新数据模型(查看dataChanged signal)而不是主窗口。如果您的颜色基于qt css,您可以使用新值调用QMainWindow :: setStyleSheet
以上是关于如何从QDialog刷新/更新/重绘QMainWindow?的主要内容,如果未能解决你的问题,请参考以下文章