Убрать заголовок и системные декорации окна Qt — делаем своё окно

В этой статье речь пойдёт о том, как убрать заголовок окна. Это её первая цель. Побочно убираем ещё тень и границы, которые рисует всё тот же декоратор.
Приступим. Создадим простой hello world в Qt Creator. C этим проблем быть не должно да и писал я уже об этом не однократно.
При создании сгенерируйте простое MainWindow окно, как предлагает creator.
Готово? Отлично. Идём дальше.
Идём в mainwindow.cpp (ну или как у вас там) находим конструктор. У меня он выглядит вот так:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

Это было по умолчанию. Т.е. если сейчас откомпилировать будет обычное окно с заголовком и прочей белибердой.
Нам нужно всеголишь изменить флаги создаваемого окна.
Для этого воспользуемся методом setWindowFlags().
Делаем так:

    this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint);

Этой строкой, которую нужно вставить в конструктор класса мы указываем, что не хотим, чтобы системный декоратор работал с нашим окном Qt::FramelessWindowHint и задаём позицию окна под всеми окнами. То есть оно никогда не будет сверху над другими.
Таких флагов вагон и маленькая тележка. Поэтому можно дотошно отредактировать любые свойства окна, включая флаги посредством побитового или.
Список всех флагом можно посмотреть тут.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий