|
46 | 46 | import h5py |
47 | 47 |
|
48 | 48 | # No splash update for Qt - the splash screen already imported it |
49 | | -from qtutils.qt import QtCore, QtGui, QtWidgets |
| 49 | +from qtutils.qt import QtCore, QtGui, QtWidgets, QT_ENV |
50 | 50 | from qtutils import UiLoader, inmain_later, inmain_decorator |
51 | 51 |
|
52 | 52 | splash.update_text('importing pyqtgraph') |
@@ -192,11 +192,24 @@ def setModelData(self, editor, model, index): |
192 | 192 | def updateEditorGeometry(self, editor, option, index): |
193 | 193 | editor.setGeometry(option.rect) |
194 | 194 |
|
| 195 | +class RunviewerMainWindow(QtWidgets.QMainWindow): |
| 196 | + |
| 197 | + def changeEvent(self, event): |
| 198 | + |
| 199 | + # theme update only for PySide6 |
| 200 | + if QT_ENV == 'PySide6' and event.type() == QtCore.QEvent.Type.ThemeChange: |
| 201 | + for widget in self.findChildren(QtWidgets.QWidget): |
| 202 | + # Complex widgets, like TreeView and TableView require triggering styleSheet and palette updates |
| 203 | + widget.setStyleSheet(widget.styleSheet()) |
| 204 | + widget.setPalette(widget.palette()) |
| 205 | + |
| 206 | + return super().changeEvent(event) |
| 207 | + |
195 | 208 |
|
196 | 209 | class RunViewer(object): |
197 | 210 | def __init__(self, exp_config): |
198 | 211 | splash.update_text('loading graphical interface') |
199 | | - self.ui = UiLoader().load(os.path.join(runviewer_dir, 'main.ui')) |
| 212 | + self.ui = UiLoader().load(os.path.join(runviewer_dir, 'main.ui'), RunviewerMainWindow()) |
200 | 213 |
|
201 | 214 | # setup shot treeview model |
202 | 215 | self.shot_model = QtGui.QStandardItemModel() |
|
0 commit comments