我有一个 QMainWindow,它正在调用一个带有 QTableView 的子窗口(QDialog)。问题是,如果我在 QTableView 中选择一个项目,它不会突出显示。如果我没有将对话框设置为主窗口的子项,它就可以工作。调色板是否以某种方式继承自主窗口?子对话框是从 .ui 文件加载的。
我已经打印了调色板的颜色,它是正确的颜色:
palette = self.tblView.palette()
print(palette.highlight().color().name())
有什么建议吗?
问候,大卫
编辑:
我现在是这样做的:
主窗口.py:
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi(os.path.abspath('ui/mainwindow.ui'), self)
def function(self):
self.setEnabled(False)
self.OeffnenWindow = OeffnenDialog(self)
returncode = self.OeffnenWindow.exec_()
if returncode == 0:
self.setEnabled(True)
if returncode == 1:
self.setEnabled(True)
do_something()
oeffnendialog.py:
class OeffnenDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
super(OeffnenDialog, self).__init__(parent)
uic.loadUi(os.path.abspath('ui/oeffnen.ui'), self)
QDialog (oeffnendialog.py) 包含一个填充数据的 QTableView。在 QTableView 内部单击不会突出显示所选行。其他一切都按照我的意愿工作。
这是我在 QTableView 上的选择/编辑触发器:
QtWidgets.QAbstractItemView.SelectRows
QtWidgets.QAbstractItemView.SingleSelection
QtWidgets.QAbstractItemView.NoEditTriggers
如果我那样做它正在工作:
self.OeffnenWindow = OeffnenDialog()
在 QDialog 类中:
super(OeffnenDialog, self).__init__(parent)
但是它不是 MainWindow 的子级,它显示在任务栏上,在切换到另一个应用程序时不会被带到前面等等。
弄明白了,我在主窗口中有一个样式表,将 QTableView 的突出显示颜色设置为白色。应该在发布之前更好地检查我的 ui 文件,抱歉!
问候