Я хочу подогнать (дочерний) виджет к размеру родительского виджета. Поэтому, если родительское окно слишком маленькое для отображения всех элементов дочернего виджета, 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();
}