如何从QDialog刷新/更新/重绘QMainWindow?

问题描述 投票:-1回答:1

我有一个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 qtreeview qmainwindow qdialog
1个回答
0
投票

如果您的颜色基于Qt roles,您必须刷新数据模型(查看dataChanged signal)而不是主窗口。如果您的颜色基于qt css,您可以使用新值调用QMainWindow :: setStyleSheet

© www.soinside.com 2019 - 2024. All rights reserved.