简述
QScrollArea提供了一个滚动视图到另一个部件。
滚动区域用于显示一个画面中的子部件的内容。如果部件超过画面的大小,视图可以提供滚动条,这样就都可以看到部件的整个区域。文章来源:https://www.toymoban.com/news/detail-528412.html
Qt Designer设计添加
- QScrollArea属于控件容器类,可以直接在ui中拖出来
- 添加需要放置的控件到QScrollArea里面,然后栅格布局
- 栅格以后调整外部大小就可以设定QScrollArea框的大小
文章来源地址https://www.toymoban.com/news/detail-528412.html
纯代码设计
mainLayout = new QVBoxLayout(this);
mainLayout->setContentsMargins(11, 11, 11, 11);
scroLLArea = new QScrollArea();
QWidget *scrollAreaWidgetContents = new QWidget(); //创建画布
QScreen *screen = QGuiApplication::primaryScreen();
QRect rect = screen->availableGeometry();//获取当前屏幕像素大小
scrollAreaWidgetContents->setFixedWidth(rect.width());
scrollAreaWidgetContents->setFixedHeight(rect.height() + 1800); //这里设置画布的高度比实际屏幕要大,方便出现滚动条
//创建多个控件
int initX = 35;
int initY = 0;
int fixSpace = 100;
int hX = 0;
int vY = initY;
for (int i = 1; i < 50; i++)
{
if (i % 2 != 0)
{
btnButton = new QPushButton(scrollAreaWidgetContents);
btnButton->move(initX, vY);
hX = btnButton->x() + btnButton->width() + fixSpace;
}
else
{
btnButton = new QPushButton(scrollAreaWidgetContents);
btnButton->move(hX, vY);
vY += fixSpace;
}
btnButton->setText(QString::number(i));
}
scroLLArea->setWidget(scrollAreaWidgetContents); //设置画布
mainLayout->addWidget(scroLLArea);
/*在主布局中添加QScrollArea ,
这时候因为自动布局的关系,
QScrollArea 的大小会与屏幕大小近似。
所以它的大小小于画布的大小!*/
到了这里,关于QT 之自动滚动区QScrollArea的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!