Политика размера 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_())
Другие вопросы по тегам