使用 Qt 4.8 在 QDockWidget 中添加的 QVBoxLayout 中重新定位小部件
Relocating Widgets in QVBoxLayout added in QDockWidget using Qt 4.8
我在 QVBoxLayout
中添加了几个按钮并在 QDockWidget
中添加了这个布局,现在我想在同一个布局(DockWidget)中添加一些滚动条来改变(Increase/Decrease) 数据显示在单独的 EditBox 中。
问题是按钮上方添加了滚动条,我想要右侧的所有按钮和左侧的滚动条。
我使用QDockWidget
的原因是我也在使用QPropertyAnimation
添加动画效果class。
下面是示例代码
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
帮助了我,但现在要添加滚动条我无法 relocate/move 小部件
您的代码示例未反映随附的屏幕截图,因此我不能 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
我在 QVBoxLayout
中添加了几个按钮并在 QDockWidget
中添加了这个布局,现在我想在同一个布局(DockWidget)中添加一些滚动条来改变(Increase/Decrease) 数据显示在单独的 EditBox 中。
问题是按钮上方添加了滚动条,我想要右侧的所有按钮和左侧的滚动条。
我使用QDockWidget
的原因是我也在使用QPropertyAnimation
添加动画效果class。
下面是示例代码
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 帮助了我,但现在要添加滚动条我无法 relocate/move 小部件
您的代码示例未反映随附的屏幕截图,因此我不能 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