さて、私は今本当にばかげていると感じています... QTableWidget があり、フォーカスがあるときにスタイルシートを変更して、境界線が「ハイライト」になるようにしたいと考えています。ウィジェットの focusInEvent をサブクラス化するだけでこれを行うことができますが、それを呼び出すsetStyleSheet()
と、以前に行ったすべてのスタイリングがオーバーライドされます。清潔さの名の下に、他のスタイリングを上書きせずに境界線の色のみを変更する最良の方法を見つけようとしています。
注意として、私はすべてのプロパティに対してこれを行うための最良の方法を見つけようとしています. この場合、border-color が必要ですが、将来的には他のものも変更したいと思うでしょう。
PyQt4 での簡単な例:
class MyTableWidget(QtGui.QTableWidget):
def __init__(self):
super(MyTableWidget, self).__init__()
self.style = "QTableView {background: red; selection-background-color: green; border: 1px solid gray}" # beautiful, I know...
self.setStyleSheet(self.style)
def focusInEvent(self, event):
super(MyTableWidget, self).focusInEvent(event)
self.setStyleSheet("border-color: blue")
def focusOutEvent(self, event):
super(MyTableWidget, self).focusOutEvent(event)
self.setStyleSheet(self.style)