【发布时间】:2014-11-20 09:16:52
【问题描述】:
我正在开发一个在嵌入式系统上全屏运行的 Qt 应用程序(带有 4d 4.3'' 触摸屏的 BeagleBone Black)。我想显示不同数量的固定宽度自定义小部件(例如,这些是简单的滑块)。所以我的想法是有一个 QScrollArea,我使用 Qt Designer 添加到我的表单中,它占用了我屏幕上的空间。然后,将我想要的 QSlider 的数量放入 QHBoxLayout 中。最后,在滚动区域显示 QHBoxLayout。这样,如果要求的 QSlider 数量太大而无法显示在屏幕上,我希望出现一个水平滚动条。我还希望 QSlider 具有恒定宽度(我的自定义小部件具有固定宽度)。所以这是我写的代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
// ui->scrollArea is a QScrollArea generated by Qt Designer
ui->setupUi(this);
QHBoxLayout * layout = new QHBoxLayout(ui->scrollArea);
layout->setSpacing(1);
QSlider * slider1 = new QSlider(layout->widget());
QSlider * slider2 = new QSlider(layout->widget());
QSlider * slider3 = new QSlider(layout->widget());
QSlider * slider4 = new QSlider(layout->widget());
slider1->setFixedSize(200, 200);
slider2->setFixedSize(200, 200);
slider3->setFixedSize(200, 200);
slider4->setFixedSize(200, 200);
layout->addWidget(slider1);
layout->addWidget(slider2);
layout->addWidget(slider3);
layout->addWidget(slider4);
ui->scrollArea->setLayout(layout);
}
结果是一个没有任何滚动条和重叠滑块的方形框。
我尝试添加:
slider1->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider2->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider3->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
slider4->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
但结果相同。
那么在固定大小的滚动区域中显示固定大小的内容的正确方法是什么?
【问题讨论】: