【问题标题】:Why do stylesheets influence QTableWidget behaviour?为什么样式表会影响 QTableWidget 的行为?
【发布时间】:2016-03-23 11:32:06
【问题描述】:

我使用 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_())

【问题讨论】:

    标签: python focus pyqt4 qtablewidget qtstylesheets


    【解决方案1】:

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

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

    我认为这可能与default 和/或autoDefault 属性有关,因为它们通常会改变按钮的样式(例如突出显示的边框)。但是设置属性没有任何效果——这个错误似乎确实只影响了 first 按钮。

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 2021-06-06
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      相关资源
      最近更新 更多