我有一个具有某些设置的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上调用的插槽是什么?
答案 0 :(得分:0)
如果您的颜色基于Qt roles,则必须刷新数据模型(请查看dataChanged signal)而不是主窗口。 如果您的颜色基于qt css,则只需使用新值调用QMainWindow :: setStyleSheet