Качественная компоновка всегда повышает юзабилити приложения и это справедливо для любых видов приложений, от десктопных до мобильных. Одним из таких элементов интерфейса, который может повысить юзабилити является класс QSplitter , который является объектом типа layout с перемещаемым разделителем, который разделяет две области в интерфейсе приложения.
Структура проекта для QSplitter
Структура проекта для QSplitter Структура проекта абсолютно ничем не примечательна и мало интересна, поскольку основные действия будут производиться в дизайнере, а настройку QSplitter в mainwindow.cpp будем производить минимальную.
Пошаговая работа с QSplitter
Первый шаг - Первым делом добавляем два объекта типа layout , в которых будут располагаться элементы интерфейса
Добавление двух layout Второй шаг - Выбираем оба layout зажав Ctrl и кликаем по кнопке "Скомпоновать по горизонтали с разделителем", ну или "Скомпоновать по вертикали с разделителем", смотря кому, что нужно.
Компоновка layout с помощью QSplitter Третий шаг - Растягиваем область, в которой располагается Наш QSplitter. Это необходимо в том случае, если внешний вид Вашего QSplitter повел себя не так, как Вам того хотелось. Для этого выбираем родительский виджет, в котором находится Ваш QSplitter и кликаем по кнопке "Скомпоновать по сетке". В итоге получим результат, подобный рисунку ниже.
Растягиваем область с QSplitter Четвертый шаг - накидаем несколько объектов для наглядности.
Объекты в слоях Пятый шаг - Корректируем программный код, чтобы отрегулировать растяжение областей при запуске приложения и устанавливаем цвет разделителя.
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- /* Устанавливаем параметры растяжения областей.
- * Области считаются слева направо.
- * в Методе setStretchFactor вначале устанавливается индекс
- * области, а потом её вес.
- * Таким образом первой области ставим максимальный вес,
- * а второй области минимальный.
- * */
- ui->splitter->setStretchFactor(0,1);
- ui->splitter->setStretchFactor(1,0);
- /* Также сразу хочу показать, как выбрать цвет разделителя.
- * Для это нам необходимо воспользоваться классом QPallete,
- * Для которого выбираем цвет фона.
- * */
- QPalette p;
- p.setColor(QPalette::Background, Qt::red);
- /* И устанавливаем палитру на QSplitter
- * */
- ui->splitter->setPalette(p);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
Итог
В результате приложение будет выглядеть следующим образом.
Приложение с разделителем