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 Четвертий крок - накидаємо кілька об'єктів для наочності.

Об'єкти в шарах П'ятий крок - Коригуємо програмний код, щоб відрегулювати розтягування областей під час запуску програми та встановлюємо колір роздільника.

#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;
}

Підсумок

В результаті програма буде виглядати наступним чином.

Додаток із роздільником

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
  • Останні коментарі
  • Evgenii Legotckoi
    16 квітня 2025 р. 17:08
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    12 квітня 2025 р. 17:12
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    01 квітня 2025 р. 11:41
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    09 березня 2025 р. 21:02
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    09 березня 2025 р. 16:14
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…