Убрать заголовок и системные декорации окна 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 и задаём позицию окна под всеми окнами. То есть оно никогда не будет сверху над другими.
Таких флагов вагон и маленькая тележка. Поэтому можно дотошно отредактировать любые свойства окна, включая флаги посредством побитового или.
Список всех флагом можно посмотреть тут.

Просмотров:   6425

Комментарии

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!