0
我有一堆QPushButtons和我自己的QToolButtons風格的網格佈局。我的對話框正在顯示我的口味,除非我碰巧有太多的按鈕,導致網格擴大到超出屏幕尺寸。所以我想添加一個滾動條。Qt網格佈局在滾動區域顯示不正確
我已經讀了一堆問題一/關於滾動條和QtGridLayout但實現這種接受的解決方案,例如qdialog with scrollarea and gridlayout 我所有的按鈕後解決方案(其中應該有自己的大小固定 - 相當於爲清楚起見,下面省略代碼)得到縮水到一個愚蠢的大小。此外,當我調整對話框大小時,滾動區域會相應調整大小,但其中的網格不會調整大小。我錯過了什麼?
注意:我已嘗試各種方法來修復各種尺寸,基本上所有工作都沒有滾動區域,但只要我將東西放在滾動區域中,網格單元格就會自動調整大小並進行無意義調整...
void createDatabaseWindow()
{
_database_widget = new QDialog;
QVBoxLayout* layout(new QVBoxLayout);
_database_layout = new QGridLayout;
QLabel* text(new QLabel("some text"));
layout->addWidget(text);
QVBoxLayout* vlayout(new QVBoxLayout);
_new_user_button = new QPushButton("New User");
vlayout->addWidget(_new_user_button);
QPushButton* cancel_button(SM_NEW QPushButton("Cancel"));
vlayout->addWidget(cancel_button);
_database_layout->addLayout(vlayout, 0, 0);
std::vector<Result> database = getWholeDatabase();
for (int i = 0; i < database.size(); i++){
myQToolButton* button(new myQToolButton(database[i]));
_database_layout->addWidget(button, (i + 1)/N_ROWS_DATABASE, (i + 1) % N_ROWS_DATABASE);
}
// the following comes from an accepted solution, but doesn't work for me...
//Create a widget and set its layout as your new layout created above
QWidget *viewport = new QWidget;
viewport->setLayout(_database_layout);
//Add the viewport to the scroll area
QScrollArea *scrollArea = new QScrollArea;
scrollArea->setWidget(viewport);
//Add the scroll area to your main window's layout
layout->addWidget(scrollArea);
_database_widget->setLayout(layout);
}