2014-11-10 2 views
0

Я создаю галерею изображений, я внедрил чтение в файлах и показывая их в изменяемом размерном пространстве прокрутки. Мы решили добавить мета-теги/Кнопки, и я ищу удобный способ не менять слишком много, но добавить эти небольшие функции.QT GridLayout add Stacked QLabel

Любое предложение, как я могу это достичь? Могу ли я добавить два Qlabels друг другу? Я попытался заклеить два ярлыка в новом макете и нажать на это в scrollWidgetLayout, но потом у меня есть только один миниатюрный значок.

На картинке вы можете увидеть, что у меня есть и что мне нужно (желтый).

enter image description here

+1

Создайте виджет с QVBoxLayout, который содержит две метки. – thuga

+0

Нормально ли, что созданные Widgets открываются в новых окнах? – user1767754

+1

Если вы не помещаете их в макет или не даете им родителя, тогда да, если вы вызываете 'QWidget :: show'. – thuga

ответ

1

Вы создаете виджет, который действует как контейнер и поставить метки внутри него. Установите макет этого виджета, я использовал QVBoxLayout. Лучшим дизайном будет создание пользовательского виджета путем подкласса QWidget, но я просто использовал QFrame, чтобы сделать этот пример быстрым и простым.

centralWidget()->setLayout(new QVBoxLayout); 
QScrollArea *area = new QScrollArea(this); 
area->setWidgetResizable(true); 
area->setWidget(new QWidget); 
QGridLayout *grid = new QGridLayout; 
area->widget()->setLayout(grid); 
centralWidget()->layout()->addWidget(area); 

for(int row = 0; row < 2; row++) 
{ 
    for(int column = 0; column < 5; column++) 
    { 
     QFrame *container = new QFrame; // this is your widget.. you can also subclass QWidget to make a custom widget.. might be better design 
     container->setStyleSheet("QFrame{border: 1px solid black;}"); // just to see the shapes better.. you don't need this 
     container->setLayout(new QVBoxLayout); // a layout for your widget.. again, if you subclass QWidget do this in its constructor 
     container->layout()->addWidget(new QLabel("TOP")); // the top label.. in your case where you show the icon 
     container->layout()->addWidget(new QLabel("BOTTOM")); // the bottom label.. in your case where you show the tag 
     grid->addWidget(container, row, column); // add the widget to the grid 
    } 
} 
+0

, спасибо за обмен кодом, я сейчас посмотрю на него. – user1767754

Смежные вопросы