Создание прокручиваемого окна без макетов - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь достичь чего-то, что, как я думал, было бы очень легко сделать. Но по какой-то причине QtDesigner сводит меня с ума, просто не сработает ...

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

Таким образом, я добавил ScrollArea в QtDesigner и добавил все элементы в качестве дочерних элементов этой ScrollArea (что, кстати, также было проблемой в заднице, потому что перетаскивание в средстве просмотра объектов не является чем-то особенным, и редактирование файла .ui от руки тоже не допускается ... отлично).

Итак, у меня сейчас следующий результат:

  • до изменения размера - полоса прокрутки отсутствует, элементы внизу недоступны

enter image description here

  • изменен размер по вертикали - некоторые вещи все еще обрезаны внизу

enter image description here

Итак, как вы видите, хотя я создал ScrollArea ... Нет области прокрутки. Итак, я немного погуглил и обнаружил, что вы можете добавить макеты к своей прокрутке, и, наконец, полоса прокрутки! Но как в этом мире я должен расположить элементы так, как вы видите на скриншотах, с макетами. Они такие супер строгие.

Как я могу просто получить вертикальную полосу прокрутки, без этого ограничительного макета?!

Вот как выглядит мой объект просмотра

А вот что называется при создании графического интерфейса:

ui->setupUi(this);
//setCentralWidget(ui->scrollArea);
//ui->scrollArea->setWidgetResizable(true);

Я попробовал это с и без закомментированных строк. Нет полосы прокрутки, что бы я ни делал.

1 Ответ

0 голосов
/ 29 мая 2019

Попробуйте это исправить:

В Qt Designer:

  • Выберите QScrollArea объект.
  • Снимите отметку с QScrollArea свойства widgetResizable.

В C ++:

// If you want to set `widgetResizable` programmaticly
ui->scrollArea->setWidgetResizable(false); // Optional if you did it in Qt Designer
ui->scrollArea->widget()->adjustSize();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...