Мне нужно разместить QHBoxLayout в QScrollArea.
Это нужно для того, чтобы если QHBoxLayout будет слишком широкий, он просто уезжал за границу окна и не растягивал окно во всю ширину.
Я пользуюсь таким кодом:
#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QScrollArea>
#include <QPalette>
#include <QSizePolicy>
#include <QString>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *recordTagsContainer;
QHBoxLayout *recordTagsLayout;
QScrollArea *recordTagsScrollArea;
QLabel *label1=new QLabel("Label1");
QLabel *label2=new QLabel("Label2");
QLabel *label3=new QLabel("Label3");
// Область текстовых меток, которые выглядят на экране как [метка1] [метка2] [метка3] ...
recordTagsLayout=new QHBoxLayout();
recordTagsLayout->setAlignment(Qt::AlignLeft);
// !!! Место для добавления текстовых меток !!!
// QHBoxLayout невозможно добавить в QScrollArea, поэтому оборачивается в виджет
recordTagsContainer = new QWidget();
recordTagsContainer->setBackgroundRole(QPalette::Dark);
recordTagsContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
recordTagsContainer->setLayout(recordTagsLayout);
// Создается QScrollArea и в нее добавляется виджет с QHBoxLayout
recordTagsScrollArea=new QScrollArea();
recordTagsScrollArea->setWidget(recordTagsContainer);
// Добавление текстовых меток
recordTagsLayout->addWidget(label1);
recordTagsLayout->addWidget(label2);
recordTagsLayout->addWidget(label3);
recordTagsScrollArea->show();
return app.exec();
}
В этом примере добавление текстовых меток происходит ближе к концу кода. И этот пример НЕ показывает текст «Label1 Label2 Label3»!
А если перенести добавление текстовых меток в область строки, обозначенную в коде как "!!! Место для добавления текстовых меток !!!" (то есть, сразу после создания QHBoxLayout), то все корректно отображается:
http://i.piccy.info/i9/d0296fc34b553ed2c76c95e7ec6ce81f/1417377690/13906/8259...
Но у меня программа должна сначала создавать интерфейс: основные виджеты, слои, области прокрутки. И только потом динамически добавлять/удалять эти самые текстовые метки.
Вопрос: как добавить текстовые метки в QHBoxLayout, размещенный в QScrollArea так, чтобы они были видны? Причем сделать это надо после размещения QHBoxLayout в QScrollArea.