我已经创建了自己的小部件,我将从代码中添加到另一个小部件中。表单小部件使用qtCreator创建。我已经将“子窗口小部件”安排到verticalLayout中以便将一个放在另一个下面,但由于插入的窗口小部件的数量不固定,我需要有一个滚动条。 所以我将verticalLayout放入scrollArea,但滚动条永远不会出现,为什么?结构“father-> child”如下: formWidget-> scrollArea-> VerticalLayout的 感谢
编辑:问题如下:我是从QPushButton的点击插槽创建小部件: 在该小部件的costructor中,我创建了一个QScrollArea和一个VerticalLayout。 在布局中插入了我想要的所有小部件后,我将布局添加到scrollArea。 这是错误的:为了使从按钮创建的小部件中的scrollArea可见,需要在滚动条中直接从单击的插槽代码中插入该小部件。 有关更多详细信息,我附加了单击的插槽和小部件构造函数的代码
按钮插槽(点击)
scrollArea= new QScrollArea;
scheduleWindow = new Schedule(traceFilePath);
scrollArea->setWidget(scheduleWindow);
scrollArea->resize(scheduleWindow->getWidth(), scheduleWindow->getHeight());
QRect rec = QApplication::desktop()->screenGeometry();
unsigned int desktopHeight = rec.height();
unsigned int desktopWidth = rec.width();
if(scheduleWindow->getWidth() > desktopWidth ||
scheduleWindow->getHeight() > desktopHeight)
scrollArea->showMaximized();
else
scrollArea->show();
小部件构造函数
Schedule::Schedule(QString pathname, QWidget *parent) :
QWidget(parent),
ui(new Ui::Schedule)
{
ui->setupUi(this);
traceParser parser(pathname);
parser.readJson();
ArchitectureParameter arch = parser.getArchParam();
QString taskName;
unsigned int nTasks = 0;
TaskSchedule *t;
for(std::list<QString>::iterator taskNameIter = parser.getTaskNames().begin();
taskNameIter != parser.getTaskNames().end(); taskNameIter++)
{
taskName = *taskNameIter;
nTasks++;
cout<<taskName.toStdString()<<endl;
t = new TaskSchedule(this , taskName, 80, arch.nCPU(), arch.maxTime(),
parser.getExecList(taskName), parser.getTaskSimpleEventsMap(taskName));
ui->pageLayout->addWidget(t);
}
cout<<nTasks<<endl;
width = 2*t->getLineXPosStart() + t->getTickLength()*arch.maxTime();
height = nTasks*(2*TASKSCH_Y_OFFSET + arch.nCPU()*t->getCpuHeight());
ui->area->resize(width, height);
ui->area->setMinimumSize(width, height);
this->adjustSize();
}
答案 0 :(得分:1)
你必须放置一个scrollArea,就像你说的那样。 然后拖动您想要的所有项目&#34;可滚动&#34;在那个区域内。 一旦它们在scrollArea中,您应该选择它并设置布局,垂直或水平。 然后,当您调整窗口小部件的大小时,滚动条会在需要时显示。
你能不能用一些照片说明我们。所以我们可以理解这个问题? 看起来像是一个图形问题,所以很难引导你,没有东西可以看......
编辑:我相信为了重新排列&#34;子小部件&#34;在布局中,首先必须定义这些&#34;子小部件的父级&#34;布局本身。
答案 1 :(得分:0)
垂直布局中的项目是否超出高度/宽度限制,因此需要滚动条?据我所知,滚动条只会在超出这些尺寸后显示(你应该能够改变这种行为)。