Evgenii Legotckoi
26 августа 2015 г. 19:15

Qt/C++ - Урок 010. QSplitter или Как добавить разделитель

Качественная компоновка всегда повышает юзабилити приложения и это справедливо для любых видов приложений, от десктопных до мобильных. Одним из таких элементов интерфейса, который может повысить юзабилити является класс QSplitter , который является объектом типа layout с перемещаемым разделителем, который разделяет две области в интерфейсе приложения.

Структура проекта для QSplitter

Структура проекта для QSplitter Структура проекта абсолютно ничем не примечательна и мало интересна, поскольку основные действия будут производиться в дизайнере, а настройку QSplitter в mainwindow.cpp будем производить минимальную.


Пошаговая работа с QSplitter

Первый шаг - Первым делом добавляем два объекта типа layout , в которых будут располагаться элементы интерфейса

Добавление двух layout Второй шаг - Выбираем оба layout зажав Ctrl и кликаем по кнопке "Скомпоновать по горизонтали с разделителем", ну или "Скомпоновать по вертикали с разделителем", смотря кому, что нужно.

Компоновка layout с помощью QSplitter Третий шаг - Растягиваем область, в которой располагается Наш QSplitter. Это необходимо в том случае, если внешний вид Вашего QSplitter повел себя не так, как Вам того хотелось. Для этого выбираем родительский виджет, в котором находится Ваш QSplitter и кликаем по кнопке "Скомпоновать по сетке". В итоге получим результат, подобный рисунку ниже.

Растягиваем область с QSplitter Четвертый шаг - накидаем несколько объектов для наглядности.

Объекты в слоях Пятый шаг - Корректируем программный код, чтобы отрегулировать растяжение областей при запуске приложения и устанавливаем цвет разделителя.

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3.  
  4. MainWindow::MainWindow(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::MainWindow)
  7. {
  8. ui->setupUi(this);
  9.  
  10. /* Устанавливаем параметры растяжения областей.
  11. * Области считаются слева направо.
  12. * в Методе setStretchFactor вначале устанавливается индекс
  13. * области, а потом её вес.
  14. * Таким образом первой области ставим максимальный вес,
  15. * а второй области минимальный.
  16. * */
  17. ui->splitter->setStretchFactor(0,1);
  18. ui->splitter->setStretchFactor(1,0);
  19.  
  20. /* Также сразу хочу показать, как выбрать цвет разделителя.
  21. * Для это нам необходимо воспользоваться классом QPallete,
  22. * Для которого выбираем цвет фона.
  23. * */
  24. QPalette p;
  25. p.setColor(QPalette::Background, Qt::red);
  26. /* И устанавливаем палитру на QSplitter
  27. * */
  28. ui->splitter->setPalette(p);
  29. }
  30.  
  31. MainWindow::~MainWindow()
  32. {
  33. delete ui;
  34. }

Итог

В результате приложение будет выглядеть следующим образом.

Приложение с разделителем

Вам это нравится? Поделитесь в социальных сетях!

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь