Как заставить QLineEdit расшириться в QScrollArea

У меня есть QLabel и QLineEdit в QWidget. Когда у меня есть виджет в QScrollArea, редактирование строки не расширяется для занятия избыточной ширины окна. Когда виджет не в области прокрутки, он действительно расширяется.

Я попытался установить политику размера редактирования строки и виджета, расшириться горизонтально, но это не занимает избыточное место. Я подозреваю, что sizeHint () виджета уплотнен когда в области прокрутки. Какие-либо идеи, как сделать эту работу?

class MainWindow(QtGui.QMainWindow):
def __init__(self):
    QtGui.QMainWindow.__init__(self, None)
    self.setWindowTitle('Test Window')
    self.resize(500, 250)

    scrollArea = QtGui.QScrollArea()
    scrollWidget = QtGui.QWidget()
    scrollWidget.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum)

    layout = QtGui.QGridLayout(scrollWidget)
    label = QtGui.QLabel("Name:")
    layout.addWidget(label, 0, 0)
    lineEdit = QtGui.QLineEdit("Value")
    lineEdit.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Maximum)
    layout.addWidget(lineEdit, 0, 1)
    scrollWidget.setLayout(layout)

    scrollArea.setWidget(scrollWidget)
    self.setCentralWidget(scrollArea)
8
задан swanson 22 February 2010 в 06:02
поделиться

1 ответ

Да, это сработает. API очень понятен («Имя хоста может быть либо именем компьютера, таким как» java.sun.com «, либо текстовым представлением его IP-адреса»), и, конечно, вы можете легко проверить себя.

-121--1573935-

То, что у вас есть, точно назад. O (lg N) , как правило, означает какой-то алгоритм разделения и завоевания, и одним из общих способов реализации разделения и завоевания является бинарное дерево. В то время как двоичные деревья являются существенным подмножеством всех алгоритмов разделения и завоевания, все равно являются подмножеством.

В некоторых случаях можно преобразовать другие алгоритмы разделения и завоевания достаточно непосредственно в двоичные деревья (например, комментарии к другому ответу уже сделали попытку утверждать, что двоичный поиск аналогичен). Однако для другого очевидного примера многоходовое дерево (например, В-дерево, В + дерево или В * дерево), в то время как очевидно, что дерево так же ясно , а не двоичное дерево.

Опять же, если вы хотите достаточно сильно, вы можете растянуть точку, что многоходовое дерево может быть представлено как своего рода деформированная версия двоичного дерева. Если вы хотите, вы, вероятно, можете растянуть все исключения из точки сказать, что все они (по крайней мере, что-то вроде) двоичных деревьев. По крайней мере, для меня все это делает «двоичное дерево» синонимом «разделяй и побеждай.» Другими словами, все, чего вы добиваетесь, это искажение словаря и, по существу, уничтожение термина, который является как отдельным, так и полезным.

-121--4144510-

Я считаю, что решил вашу проблему.

Внесите в код следующее дополнение:

    ...

    scrollArea.setWidget(scrollWidget)
    scrollArea.setWidgetResizable(True) #add this
    self.setCentralWidget(scrollArea)

    ...

Из документов ,

widgetResizable: bool

Это свойство содержит информацию о необходимости изменения размера виджета вида в области прокрутки.

Если для этого свойства установлено значение true, область прокрутки автоматически изменяет размер графического элемента, чтобы избежать использования полос прокрутки, где их можно избежать, или использовать дополнительное пространство.

10
ответ дан 5 December 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: