私はQLineEditクラスを持っていますQLineEditContextこれはコンテキストウィジェット(主にボタン)を含みます。シグナルの前にチェックすると、間違ったwidget.size()が発生する
ウィジェットのリストは、その後に基づいQLineEditContextにtextMarginsを設定することでした私は何を期待していた
QLineEditContext に子ウィジェットを追加するために使用されるこのクラスに提供されます提供されているすべてのコンテキストウィジェットの幅。追加されるコンテキストボタンによってテキスト入力が重複しないようにする。
私の問題は、widget.size()を使ってクエリしたサイズが常に間違っていることです(640,480)。
ただし、私がwidget.clicked.connect()によってスロット内のサイズ(ContextWidgetsの下でdef action()を問い合わせる)を試みると、正しいサイズが返されます。
にQLineEdit
class QLineEditContext(Qtg.QLineEdit):
'''
Create QLineEdit with a internal context buttons
'''
context_button_action = Qtc.pyqtSignal(bool)
def __init__(self, widgets = None, parent = None):
super(QLineEditContext, self).__init__(parent)
# Create spacer to push child widgets to the right
spacer = Qtg.QSpacerItem(0, 0, Qtg.QSizePolicy.Expanding, Qtg.QSizePolicy.Minimum)
# Create internal layout for child widgets
internal_layout = Qtg.QHBoxLayout(self)
margin = 2
internal_layout.setContentsMargins(margin, margin, margin, margin)
internal_layout.addItem(spacer)
text_margin = 0
# Add child widgets to this widget
if widgets:
for widget in widgets:
widget.setCursor(widget.cursor()) # Force child widget to use it's default cursor, rather than the parents
widget.setSizePolicy(Qtg.QSizePolicy.Fixed, Qtg.QSizePolicy.Expanding)
internal_layout.addWidget(widget)
print widget.sizeHint(), widget.size()
text_margin = text_margin + widget.sizeHint().width() + (margin * 2)
# Create cutoff margin for text
print text_margin
self.setTextMargins(0, 0, text_margin, 0)
ContextWidgets
ctx_a = Qtg.QPushButton('_blahblahblahblahblah_')
ctx_a.setFixedWidth(200)
ctx_b = Qtg.QCheckBox()
ctx_line_edit = QLineEditContext([ctx_b,ctx_a])
ctx_a.clicked.connect(lambda: self.action(ctx_a))
ctx_b.clicked.connect(lambda: self.action(ctx_b))
def action(self, me):
print self.me.sizeHint(), self.me.size()
私はこれに似た何かを見つけることができないんだと、これを原因とどのようにそれを回避するために何に困惑しています。
ご協力いただければ幸いです。