使用Qt 4.8在QDockWidget中添加的QVBoxLayout中的重定位小部件

时间:2019-04-01 10:40:07

标签: c++ qt windows-ce

我要在QVBoxLayout中添加几个按钮,并在QDockWidget中添加此布局,现在我想在同一Layout(DockWidget)中添加一些滚动条以更改(增加/减少)显示的数据在单独的EditBox中。

问题是滚动条被添加到按钮上方,我希望所有按钮在右侧,滚动条在左侧。

我使用QDockWidget的原因是我也在QPropertyAnimation类中添加了动画效果。

下面是示例代码

QDockWidget dock(QLatin1String("Last filters"));
QWidget* multiWidget = new QWidget();
QVBoxLayout* layout = new QVBoxLayout();
QPushButton* filter1 = new QPushButton(QLatin1String("Filter number 1"));
QPushButton* filter2 = new QPushButton(QLatin1String("Filter number 2"));
QPushButton* filter3 = new QPushButton(QLatin1String("Filter number 3"));
QPushButton* filter4 = new QPushButton(QLatin1String("Filter number 4"));
QPushButton* filter5 = new QPushButton(QLatin1String("Filter number 5"));
QLabel* label = new QLabel(QLatin1String("QPushButtons"));

layout->addWidget(filter1);
layout->addWidget(filter2);
layout->addWidget(filter3);
layout->addWidget(filter4);
layout->addWidget(filter5);
layout->addWidget(label);
multiWidget->setLayout(layout);
dock.setWidget(multiWidget);

**对于动画

QPropertyAnimation *animation = new QPropertyAnimation(dockMenu, "geometry");
animation->setDuration(250);    
QRect startRect(-100,20,100,80);        
QRect endRect(20,20,100,80);                            
dockMenu->show();
animation->setStartValue(startRect);
animation->setEndValue(endRect);    
animation->start();

对于此应用,此答案为Multiple widgets on a QDockWidget  帮助了我,但现在添加滚动条,我无法重定位/移动小部件

ScreenShot

1 个答案:

答案 0 :(得分:0)

您的代码示例未反映所附的屏幕截图,因此我不确定100%是否是您正在查找的内容,但是...

如果将QVBoxLayout交换为QGridLayout,则可以将滚动条放在第一列中,并将其设置为在最大行数上展开。这些按钮可以放在第二栏中。

QGridLayout文档:https://doc.qt.io/archives/qt-4.8/qgridlayout.html#details

还有Qt的一些基本布局示例,这些示例可能会给您一些想法:https://doc.qt.io/qt-5/qtwidgets-layouts-basiclayouts-example.html