QT GridLayout добавить Stacked QLabel

0

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

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

//Create new ThumbNail-Object
thumbNail = new Thumbnail(ui->scrollArea);

scrollWidgetLayout->addWidget(thumbNail);

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

Изображение 174551

  • 1
    Создайте виджет с QVBoxLayout который содержит две метки.
  • 0
    Это нормально, что вновь созданные виджеты открываются в новых окнах?
Показать ещё 2 комментария
Теги:
qt

1 ответ

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
    спасибо, что поделились кодом, я сейчас посмотрю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню