ScrollArea в выпуске QT?
У меня есть одна форма, где я применяю ScrollArea, но она не применяется должным образом? Я хочу поместить четыре кнопки в прокручиваемую область, и когда кнопки будут увеличены, должна появиться полоса прокрутки, чтобы прокручиваться вниз по вертикали.
В настоящее время, когда я пытаюсь добавить больше кнопок, кнопки перекрываются со списком и не растут вниз.
Вот мой код:
QPushButton *b1 = new QPushButton(strsearch);
QPushButton *b2 = new QPushButton(strsearch);
QPushButton *b3 = new QPushButton(strsearch);
QPushButton *b4 = new QPushButton(strsearch);
b1->setStyleSheet(
"background-image: url(:/user.gif);"
"background-repeat:no-repeat;"
"background-attachment:fixed;"
"background-position:left top;"
"border-style: outset;"
"background-color : black;"
"border-width: 2px;"
"border-radius: 10px;"
"border-color: black;"
"font: bold 16px;"
"color: black;"
"min-width: 10em;"
"min-height: 0.75em;"
"margin: 0 1px 0 1px;"
"color:rgb(255,255,255);"
"padding: 6px;"
);
b2->setIcon(QIcon(":/user.gif"));
b2->setIconSize(QSize(160, 26));
b3->setIcon(QIcon(":/user.gif"));
b3->setIconSize(QSize(160, 26));
b4->setIcon(QIcon(":/user.gif"));
b4->setIconSize(QSize(160, 26));
QGridLayout *layout = new QGridLayout;
layout->addWidget(b1, 1, 0);
layout->addWidget(b2, 2, 0);
layout->addWidget(b3, 3, 0);
layout->addWidget(b4, 4, 0);
layout->addWidget(scrollArea);
layout->setAlignment(Qt::AlignBottom);
setLayout(layout);
1 ответ
Решение
//Create the buttons
QPushButton *b1 = new QPushButton("Button 1");
QPushButton *b2 = new QPushButton("Button 2");
QPushButton *b3 = new QPushButton("Button 3");
QPushButton *b4 = new QPushButton("Button 4");
//Add the buttons to a vertical layout (faster than grid layout)
QVBoxLayout *scrollLayout = new QVBoxLayout;
scrollLayout->addWidget(b1);
scrollLayout->addWidget(b2);
scrollLayout->addWidget(b3);
scrollLayout->addWidget(b4);
//Create a viewport widget that contains the layout with buttons
QWidget *viewport = new QWidget;
viewport->setLayout(scrollLayout);
//Add the viewport to the scroll area
QScrollArea *scrollArea = new QScrollArea;
scrollArea->setWidget(viewport);
//Add the scroll area to your main window's layout
mainLayout->addWidget(scrollArea);