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()
나는 이와 유사한 아무것도 찾을 수 없어요이 원인이 어떻게 극복하는 무슨에 난처한 상황에 빠진입니다.
도움을 주시면 감사하겠습니다.