Политика размера QT только для роста
У меня есть QLabel, и эта ширина сокращается до размера контента. Как настроить политику размера на политику только для роста? например, я установил текст на "12345", и QLabel должен увеличиться до минимального размера, чтобы показать это содержимое, но когда я установил "12", это не уменьшилось бы и осталось прежним.
1 ответ
Ну, если вам не нужно использовать пространство, которое вы хотите восстановить для других виджетов, вы можете использовать QtGui.QSpacerItem
; смотрите описание класса QSpacerItem.
Вы можете установить политику размера для элемента распорки.
Примечание: это делается автоматически, когда вы используете QtDesigner.
В QtDesigner это должно выглядеть так:
Ярлык имеет голубой фон для иллюстративных целей.
Здесь у вас есть пример кода:
Предупреждение: код был написан на Python. Я не знаю твоих языковых предпочтений. Но интерфейс почти такой же. Гуг удачи.
import PyQt4.QtGui as gui
import PyQt4.QtCore as core
import sys
if __name__ == "__main__":
app = gui.QApplication(sys.argv)
widget = gui.QWidget(None)
label = gui.QLabel(widget)
label.setStyleSheet("background-color: cyan;")
label.setMinimumWidth(10)
label.setText("Write some text above")
text = gui.QLineEdit(widget)
layout = gui.QVBoxLayout(widget)
hlayout = gui.QHBoxLayout(widget) # This layout will contains
# the label and a sacer item.
layout.addWidget(text)
hlayout.addWidget(label) # Add the label.
# Create the spacer.
spacerItem = gui.QSpacerItem(40, 20, gui.QSizePolicy.Expanding, gui.QSizePolicy.Minimum)
hlayout.addItem(spacerItem) # Add the spacer.
layout.addItem(hlayout)
# Slot for change the text of the label.
@core.pyqtSlot()
def on_textChanged():
label.setText(text.text())
text.textChanged.connect(on_textChanged)
widget.show()
sys.exit(app.exec_())