QScrollArea:由垂直滚动条引起的水平滚动条
QScrollArea: horizontal scrollbar caused by vertical scrollbar
我有一个简单的对话框,里面有一个QScrollArea:
// Vertical container for the dialog
QVBoxLayout *cont = new QVBoxLayout;
this->setLayout(cont); //"this" is my derived QDialog class
// ScrollArea for iconFrame
QScrollArea *scroll = new QScrollArea;
cont->insertWidget(0, scroll );
// The frame to be added to the QScrollArea
QFrame *iconFrame = new QFrame;
scroll->setWidget(iconFrame);
scroll->setWidgetResizable(true);
// Grid layout for iconFrame
QGridLayout *grid = new QGridLayout;
iconFrame->setLayout(grid);
// Second child widget for the dialog
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
cont->insertWidget(1, buttonBox);
int maxcol = int(ceil(sqrt(numberOfButtons)));
if(maxcol > 6) maxcol = 6;
for(int i=0; i<numberOfButtons; i++)
{
QPushButton *button= new QPushButton("My Button");
button->setFixedSize(48, 48);
int row = int(floor(i/maxcol));
grid->addWidget(button, row, i-row*maxcol);
}
由于最多有6列,因此框架和对话框将垂直增长。
它按预期工作,只是绘制水平滚动条只是因为垂直滚动条增加了宽度。
我尝试过sizePolicies和sizeConstraints的不同组合,但似乎没有任何效果。
如何去掉水平滚动条?
您可以使用滚动条策略来抑制滚动条:
scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
请注意,内容可能会被剪辑。
对于滚动区域有更多可用空间的情况,您可以尝试widgetResizable
:
scroll->setWidgetResizable(true);
与其说是一个解决方案,不如说是一种变通方法,但它确实有效。
iconFrame->adjustSize(); // Only necessary when contents of iconFrame have changed
if(iconFrame->height() > scroll->height())
scroll->setMinimumWidth(iconFrame->width()+scroll->verticalScrollBar()->height());
相关文章:
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- 如何在不使用滚动条的情况下使视图更改
- 通过水平滚动条更改标签
- Qt:无法直接为带有子项的小部件添加滚动条
- OnVScroll : 从 CSpinButtonCtrl 或垂直滚动条调用?
- win32 滚动条在 C/C++ 程序中不起作用
- 外观 MFC 滚动条
- 将水平滚动条添加到控制台
- QListWidget 水平滚动条会导致选择消失在视野之外
- 滚动条缩略图跟踪长度 基于图像的水平适合调整窗口大小时出现问题
- 隐藏 mfc 水平滚动条
- 禁用列表视图中的水平滚动条
- C++ 具有水平滚动条的 MFC 列表控件
- 使用水平滚动条手动设置 MFC CComboBox 下拉列表高度
- Qt - 无效使用不完整的类型 'class QScrollBar' - 为文本编辑小部件添加水平滚动条
- 有没有人使用水平滚动条中的"scroll arrows"来滚动位置?
- 添加水平滚动条来调整窗口对话框的大小
- 如何知道水平滚动条是否显示在QPlainTextEdit继承的类中
- 如何在MFC中禁用CListCtrl的水平滚动条