Применить макет Qt к случайно размещенному интерфейсу виджетов - PullRequest
0 голосов
/ 29 января 2019

В моем проекте Qt 5.10.0 под CentOS 7 у меня есть файл пользовательского интерфейса, который содержит изображение устройства, а на изображении несколько меток и кнопок, случайно размещенных на изображении (здесь случайным образом означает отсутствие форм строк иликолонны).Я добавил область прокрутки, а затем добавил все внутри нее.Когда я применяю макет любого типа так, чтобы область прокрутки работала, виджеты смещались ненормальным образом.

В этом видео , например, макет области прокрутки работает, потому что виджетыразмещены в ряд, и вы можете добавить столько строк, сколько хотите.Я нашел несколько других учебных пособий с похожим дизайном.

Поскольку макет необходим для работы области прокрутки, я подумал о нескольких идеях:

  1. Написание собственного менеджера макета, специально предназначенного дляэтот пользовательский интерфейс, а затем установите макет области прокрутки, чтобы быть его экземпляром.
  2. Попробуйте изменить дизайн пользовательского интерфейса и сделать его более организованным.Я пробовал это, но изображение разбивает все, неуместно все виджеты.
  3. Группирование некоторых виджетов в горизонтальном расположении, например, и затем группирование расположений в вертикальном, например.Но с другой стороны, изображение ломает все.
  4. У меня есть другой пользовательский интерфейс, в котором работает область прокрутки, но потому что виджет выложен в виде строк, а затем сгруппирован в групповые блоки, которые не требуют дополнительных шагов.

Что вы предлагаете для реализации области прокрутки в таком пользовательском интерфейсе?

PS: Извините, что не предоставил пример кода.Все проприетарные.

1 Ответ

0 голосов
/ 29 января 2019

Это создаст область прокрутки на виджете с 3 случайно расположенными кнопками внутри него.

void setupUi(QWidget *Widget)
{
    scrollArea = new QScrollArea(Widget);
    scrollArea->setGeometry(QRect(10, 10, 200, 200));
    scrollArea->setWidgetResizable(false); // Important! Without this, QScrollArea will try to shrink viewport widget.
    scrollAreaWidgetContents = new QWidget();
    scrollAreaWidgetContents->setGeometry(QRect(0, 0, 1000, 1000)); // Now scrollable area has size 1000x1000 px.
    pushButton = new QPushButton(scrollAreaWidgetContents);
    pushButton->setObjectName(QString::fromUtf8("pushButton"));
    pushButton->setGeometry(QRect(10, 70, 82, 23));
    pushButton_2 = new QPushButton(scrollAreaWidgetContents);
    pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
    pushButton_2->setGeometry(QRect(130, 110, 82, 23));
    pushButton_3 = new QPushButton(scrollAreaWidgetContents);
    pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
    pushButton_3->setGeometry(QRect(70, 170, 82, 23));
    scrollArea->setWidget(scrollAreaWidgetContents);
} // setupUi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...