为什么样式表会影响QTableWidget的行为?

时间:2016-03-23 11:32:06

标签: python focus pyqt4 qtablewidget qtstylesheets

我使用python2.7和PyQt4。我创建了一个带有按钮框和表格小部件的简单应用程序。如果我编辑表格单元格并按下“确定”按钮,则单元格编辑器将始终消失。但是在我添加app.setStyleSheet(s)行之后,按下“确定”按钮后,单元格编辑器不会消失。发生了什么事?

import sys
from PyQt4 import QtGui


class Widget(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)

        l = QtGui.QVBoxLayout(self)

        table = QtGui.QTableWidget()

        table.setColumnCount(3)
        table.setRowCount(5)

        l.addWidget(table)

        l.addWidget(QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel))


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    s = "QWidget{background:red;}"
    # app.setStyleSheet(s)
    app.setStyleSheet(s)

    mw = QtGui.QMainWindow()
    w = Widget()
    mw.setCentralWidget(w)
    mw.show()

    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

这似乎是Qt4中的一个错误,但我找不到具体的报告。使用PyQt5时,相同的代码按预期工作,因此它在某种程度上得到了修复。

该错误实际上在QTableWidget而不是QLineEdit。如果向示例中添加*ngIf="data"并将焦点设置在该示例上,您将看到单击“确定”按钮不会切换焦点。或者更确切地说,单击第一个按钮不会切换焦点。按钮框中的所有其他按钮都能正常工作。

我认为这可能与check out the doc's和/或default属性有关,因为它们通常会更改按钮的样式(例如突出显示的边框)。但是设置属性没有任何影响 - 这个bug似乎确实只影响第一个按钮。