Qt - содержимое обрезки виджета QScrollArea - PullRequest
1 голос
/ 11 февраля 2010

Я пытаюсь добавить прокрутку в пример источника перетаскивания, который я изменил. Пример просто рисует несколько перетаскиваемых виджетов QLabel. Я модифицировал его таким образом, чтобы было создано большее количество виджетов различной длины.

Я создал класс, который будет вызываться main и будет содержать виджет прокрутки, который, в свою очередь, будет содержать оригинальный виджет, который рисует QLabels. Единственный метод в этом классе - это конструктор, и вот его реализация:

layoutWidget::layoutWidget(QWidget *parent) : QWidget(parent){
    QScrollArea *scroll = new QScrollArea();
    QVBoxLayout *layout = new QVBoxLayout();

    //widget that draws the draggable labels
    Widget *w = new Widget();

    scroll->setWidget(w);
    scroll->setBackgroundRole(QPalette::Light);

    layout->addWidget(scroll);    

    setLayout(layout);
}

Я использую setMinimumSize () в конструкторе Widget. Когда я запускаю программу, рисуется только то, что находится внутри области, определенной setMinimumSize (), остальное обрезается. Я что-то упустил?

Ответы [ 2 ]

1 голос
/ 11 февраля 2010

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

0 голосов
/ 12 февраля 2010

Минимальный размер виджета внутри области прокрутки был меньше, чем его содержимое, поэтому рисуется только то, что находится внутри этой области. Я использовал большие значения для setMinimumSize (), и проблема была решена.

...