我正在开发一个在嵌入式系统上全屏运行的Qt应用程序(带有4d 4.3''触摸屏的BeagleBone Black)。我想显示不同数量的固定宽度自定义小部件(假设这些是简单的滑块)。所以我的想法是有一个QScrollArea,我使用Qt Designer添加到了我的表单中,它使用了我的屏幕空间。然后,把我想要的QSlider的数量放在QHBoxLayout中。最后,在滚动区域显示QHBoxLayout。这样,我想要一个水平滚动条出现,如果QSlider要求的数量很大以显示在屏幕上。我也希望QSlider具有恒定的宽度(我的自定义小部件具有固定的宽度)。所以这是我写的代码:QScrollArea中的QBoxLayout中的固定大小的小部件
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));
但相同的结果。
那么在固定大小的滚动区域中显示固定大小内容的正确方法是什么?
请注意,当您使用Qt Creator来设计gui时,它会自动在名为'scrollAreaWidgetContents'的QScrollArea内添加一个QWidget。手动添加布局时,应将其分配给此小部件,而不是滚动区域。 – vsz 2015-09-24 06:05:29