Я хочу вписать (дочерний) виджет в размер родительского виджета. Поэтому, если родительское окно слишком мало для отображения всех элементов дочернего виджета, должна появиться QScrollArea, в противном случае она должна быть невидимой.
Я приложил фотографии для лучшего понимания.
Черный ящик - это место, где я хочу, чтобы появился мой свиток. Поскольку, когда мы уменьшаем размер окна, иногда вы не можете видеть полосу прокрутки (как показано на рисунке ниже), она не выглядит достаточно элегантно для больших проектов.
Пожалуйста, помогите мне с тем же, заранее спасибо.
Вот пример кода, который я использовал, например:
int main(int argc, char *argv[]){
QApplication a(argc, argv);
QScrollPractice w;
QDialog * dlg = new QDialog();
//dlg->setGeometry(100, 100, 260, 260);
dlg->setMinimumSize(150, 200);
QScrollArea *scrollArea = new QScrollArea(dlg);
scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
scrollArea->setWidgetResizable(true);
//scrollArea->setGeometry(10, 10, 200, 200);
//scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored);
//QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
scrollArea->setSizePolicy(sizePolicy);
QWidget *widget = new QWidget(scrollArea);
scrollArea->setWidget(widget);
QVBoxLayout *layout = new QVBoxLayout(widget);
widget->setLayout(layout);
for (int i = 0; i < 10; i++)
{
QPushButton *button = new QPushButton(QString("%1").arg(i));
layout->addWidget(button);
}
dlg->show();
return a.exec();
}