Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QScrollArea

Автор: demaker 14.2.2013, 14:31

Подскажите как сделать чтобы, появились на scrollarea прокрутки
Создаю виджет добавляю скролларию и хочу прокрутить, чтобы посмотреть все лейблы, но прокрутить не получается.

вот код

    QVBoxLayout*vbl = new QVBoxLayout();
    QWidget*w =  new QWidget;

    scrollArea = new QScrollArea;
    scrollArea->setBackgroundRole(QPalette::Dark);
    scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    scrollArea->setWidgetResizable(true);
    scrollArea->setWidget(w);

    for(int i = 0; i<100; i ++)
    {
        QLabel *imageLabel = new QLabel("label",w);
        imageLabel->setFrameStyle(QFrame::WinPanel);
        imageLabel->setGeometry(20,20+i*50,100,50);
    }

    vbl->addWidget(scrollArea);
    setLayout(vbl);


Автор: lanz 14.2.2013, 14:55

w->setMinimumSize (100, 50*100 + 20);


Из документации:
Цитата
If a standard QWidget is used for the child widget, it may be necessary to call QWidget::setMinimumSize() to ensure that the contents of the widget are shown correctly within the scroll area.

Автор: Алексей1153 14.2.2013, 14:56

а для чего на scrollArea добавляется компоновщик ? По-моему, он тут не нужен и как раз может повлиять на прокрутку

Автор: demaker 14.2.2013, 15:34

Да, действительно.
Т.е устанавливаем минимальный размер виджета который привязан к scrollarea.
И если он больше размера основного виджета, то добавляются scroll.

Спасибо.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)