使用qtcreator在qt小部件中插入滚动条
Insert a scrollbar in a qt widget using qtcreator
我已经创建了我自己的小部件,我将从代码中放入另一个小部件。表单小部件是用qtCreator创建的。我已经安排了"子部件"到一个垂直布局,以便把一个下另一个,但由于插入的小部件的数量是不固定的,我需要有一个滚动条。所以我把我的垂直布局到一个滚动区,但滚动条从来没有出现,为什么?"father->child"的结构如下:formWidget -> scrollArea -> verticalLayout由于
编辑:问题如下:我是从QPushButton的点击槽创建小部件:在这个小部件的构造函数中,我创建了一个QScrollArea和一个vertical allayout。在布局中插入我想要的所有小部件之后,我将布局添加到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();
}
你必须放置一个scrollArea,就像你说的。然后将所有你想要"可滚动"的项目拖到该区域内。一旦它们进入了scrollArea,你就应该选择它并设置一个垂直或水平的布局。然后,当您调整小部件的大小时,scrollBar会在需要时出现。
你能给我们一些图片说明一下吗?这样我们就能理解问题了?似乎是一个图形问题,所以如果没有东西可以看,很难指导你…
编辑:我认为为了重新排列布局中的"子部件",首先你必须定义这些"子部件"的父部件,即布局本身。
垂直布局中的项目是否超过了高度/宽度限制,因此需要滚动条?据我所知,滚动条只在超过这些尺寸时显示(您应该能够改变这种行为)。
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- 如何在不使用滚动条的情况下使视图更改
- 通过水平滚动条更改标签
- Qt:无法直接为带有子项的小部件添加滚动条
- OnVScroll : 从 CSpinButtonCtrl 或垂直滚动条调用?
- win32 滚动条在 C/C++ 程序中不起作用
- 外观 MFC 滚动条
- 停止 QTextCursor::insertText() 修改 QTextDocument 滚动条范围
- 如何在wxRadioBox中添加滚动条
- QPainter的QWidget滚动条
- 将水平滚动条添加到控制台
- QT - 如何创建具有长 int(而不是 int)步长的滚动条?
- QListWidget 水平滚动条会导致选择消失在视野之外
- 有没有办法有条件地检查窗口是否正在使用滚动条
- 滚动条到底部的QTableWidget
- CListCtrl 更新滚动条问题
- 如何在Qt中将文本附加到QPlainTextEdit并保持滚动条稳定?
- 如何在滚动区域中动态插入项目并在QT中加载滚动条
- 使用qtcreator在qt小部件中插入滚动条