2016-03-23 12 views
2

私はpython2.7とPyQt4を使用します。私は、ボタンボックスとテーブルウィジェットで簡単なアプリケーションを作成しました。表のセルを編集して[OK]ボタンを押すと、セルエディタは常に消えます。しかし、app.setStyleSheet(s)行を追加すると、OKボタンを押してもセルエディタが消えません。何が起こっている?スタイルシートがQTableWidgetの動作に影響するのはなぜですか?

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_()) 

答えて

0

これはQt4版のバグのようですが、私はそれのために特定のレポートを見つけることができません。同じコードがPyQt5を使用するときに期待通りに機能するため、何らかの点で何とか修正されています。

バグは実際にはにあります。このバグは、実際にQDialogButtonBoxではなく、QTableWidgetです。例にQLineEditを追加してフォーカスを設定すると、[OK]ボタンをクリックしてもフォーカスが切り替わらないことがわかります。または、より正確には、の最初のボタンをクリックしても、フォーカスは切り替わりません。ボタンボックス内の他のボタンはすべて正常に動作します。

これは、通常、ボタンのスタイル(たとえば、強調表示されている境界線)を変更するため、defaultおよび/またはautoDefaultのプロパティと関係があると考えました。しかし、プロパティを設定しても効果はありません。バグは実際にはの最初のボタンにのみ影響するようです。

関連する問題