Qt网格布局不正确显示在滚动区域
Qt grid layout not displaying correctly in scroll area
我有一个网格布局,里面有一堆QPushButtons和我自己的QToolButtons。我的对话框是按照我的口味显示的,除非我碰巧有太多的按钮,这会导致网格扩展到屏幕大小之外。我想添加一个滚动条。
我已经读了一堆关于滚动条和QtGridLayout的问题/解决方案,但在实现这个可接受的解决方案之后,例如qdialog与scrollarea和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);
}
明白了!问题是网格布局内容的动态变化。修复所有问题的神奇行是:
_database_layout->setSizeConstraint(QLayout::SetMinAndMaxSize);
相关文章:
- 使用一个考虑到std::map中键值的滚动或换行的键
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- C++ Qt如何在滚动区域添加小部件?
- 如何在 Wt 中向表添加滚动区域(机智)
- 如何在移动列表视图中添加滚动条?并且用户只能垂直滚动特定区域
- 滚动区域数据居中对齐 希望将其更改为左对齐
- 禁用 QTableView/QTableWidget 中的滚动区域
- QT设置了QplaintExtedIt的滚动区域,以匹配Anothers的滚动区域
- 如何在滚动区域中动态插入项目并在QT中加载滚动条
- Qt GUI C++ (Android) - 如何在不触摸滚动条的情况下在滚动区域之外滚动
- QScroll区域与垂直滚动的问题
- win32, scrollwindowex(): 如何显示向下滚动后消失的"off window"的向上区域?
- Qt网格布局不正确显示在滚动区域
- 滚动区域内的小部件
- 控制一个滚动区域的一个简单的滚动条在Qt
- 滚动区域中的大小调整问题
- Qt Q滚动区域自动滚动
- Qt调整窗口大小以适应滚动区域问题中的纵横比
- CScrollView 仅滚动浏览大区域的一部分