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

时间:2018-09-20 04:35:46

标签: qt qtreeview qmainwindow qdialog

我有一个具有某些设置的QDialog,在此基础上,需要更新,重新绘制或刷新QTreeView或整个QMainWindow。

QDialog有两个按钮:

  • 应用:此按钮需要将设置应用于QMainWindow,例如将颜色应用于QTreeView列。这是一个示例,QMainWindow上还有更多项,例如QTableView等,单击此按钮也需要更新。

  • 关闭:此按钮隐藏QDialog。

我尝试在单击“应用按钮”时调用QMainWindow上的重绘/更新功能,但是没有任何效果。

void MainWindow::refresh() 
{
setUpdatesEnabled(true);
setWindowModified(true);
repaint();
update();
show();
}

但是,在单击“关闭”按钮(它在QDialog上调用hide)时,QMainWindow上的整个视图都会被更新/重新绘制。

我需要在“应用”按钮上执行完全相同的操作。

如何实现? QDialog-> hide在QMainWindow上调用的插槽是什么?

1 个答案:

答案 0 :(得分:0)

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