Перемещение виджетов в QVBoxLayout добавлено в QDockWidget с использованием Qt 4.8 - PullRequest
0 голосов
/ 01 апреля 2019

Я добавляю несколько кнопок в QVBoxLayout и добавляю этот макет в QDockWidget, теперь я хочу добавить полосу прокрутки в том же макете (DockWidget), чтобы изменить (увеличить / уменьшить) данные, показанные в отдельном окне редактирования.

Проблема в том, что над кнопками добавлена ​​полоса прокрутки, я хочу, чтобы все кнопки были справа, а полоса прокрутки - в левой.

Причина, по которой я использую 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();

Для этого приложения этот ответ на Несколько виджетов на QDockWidget мне помогло но теперь добавить полосу прокрутки я не могу переместить / переместить виджеты

ScreenShot

1 Ответ

0 голосов
/ 08 апреля 2019

Ваш пример кода не отражает прикрепленный скриншот, поэтому я не на 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

...