Разворачивание и сворачивание окна

В заголовке окна расположены кнопки Свернуть и Развернуть, с помощью которых можно свернуть окно в значок на Панели задач или максимально развернуть окно. Выполнить подобные действия из программы позволяют следующие методы класса QWidget:

  • showMinimized() — сворачивает окно на Панель задач. Эквивалентно нажатию кнопки Свернуть в заголовке окна. Метод является слотом. Прототип метода:
void showMinimized()
  • showMaximized() — разворачивает окно до максимального размера. Эквивалентно нажатию кнопки Развернуть в заголовке окна. Метод является слотом. Прототип метода:
void showMaximized()
  • showFullScreen() — включает полноэкранный режим отображения окна. Окно отображается без заголовка и границ. Метод является слотом. Прототип метода:
void showFullScreen()
  • showNormal() — отменяет сворачивание, максимальный размер и полноэкранный режим. Метод является слотом. Прототип метода:
void showNormal()
  • activateWindow() — делает окно активным (т. е. имеющим фокус ввода). В Windows, если окно было ранее свернуто в значок на Панель задач, то оно автоматически не будет отображено на экране. В этом случае станет активным только значок на Панели задач. Прототип метода:
void activateWindow()
  • setWindowState() — изменяет статус окна в зависимости от переданных флагов. Прототип метода:
void setWindowState(Qt::WindowStates windowState)

В качестве параметра указывается комбинация следующих констант через побитовые операторы:

  • Qt::WindowNoState — нормальное состояние окна;
  • Qt::WindowMinimized — окно свернуто;
  • Qt::WindowMaximized — окно максимально развернуто;
  • Qt::WindowFullScreen — полноэкранный режим;
  • Qt::WindowActive — окно имеет фокус ввода, т. е. является активным.

Например, включить полноэкранный режим можно так:

this->setWindowState((this->windowState() &
    ~(Qt::WindowMinimized | Qt::WindowMaximized))
    | Qt::WindowFullScreen);

Проверить текущий статус окна позволяют следующие методы:

  • isMinimized() — возвращает true, если окно свернуто, и false — в противном случае. Прототип метода:
bool isMinimized() const
  • isMaximized() — возвращает true, если окно раскрыто до максимальных размеров, и false — в противном случае. Прототип метода:
bool isMaximized() const
  • isFullScreen() — возвращает true, если включен полноэкранный режим, и false — в противном случае. Прототип метода:
bool isFullScreen() const
  • isActiveWindow() — возвращает true, если окно имеет фокус ввода, и false — в противном случае. Прототип метода:
bool isActiveWindow() const
  • windowState() — возвращает комбинацию флагов, обозначающих текущий статус окна. Прототип метода:
Qt::WindowStates windowState() const

Пример проверки использования полноэкранного режима:

if (this->windowState() & Qt::WindowFullScreen) {
   qDebug() << "Полноэкранный режим";
}

Пример разворачивания и сворачивания окна приведен в листинге 3.4.

Листинг 3.4. Разворачивание и сворачивание окна

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QWidget window;
   window.setWindowTitle("Разворачивание и сворачивание окна");
   window.resize(350, 200);

   QPushButton *btnMin = new QPushButton("Свернуть");
   QPushButton *btnMax = new QPushButton("Развернуть");
   QPushButton *btnFull = new QPushButton("Полный экран");
   QPushButton *btnNormal = new QPushButton("Нормальный размер");

   QVBoxLayout *vbox = new QVBoxLayout();
   vbox->addWidget(btnMin);
   vbox->addWidget(btnMax);
   vbox->addWidget(btnFull);
   vbox->addWidget(btnNormal);
   window.setLayout(vbox);

   QObject::connect(btnMin, SIGNAL(clicked()),
                    &window, SLOT(showMinimized()));
   QObject::connect(btnMax, SIGNAL(clicked()),
                    &window, SLOT(showMaximized()));
   QObject::connect(btnFull, SIGNAL(clicked()),
                    &window, SLOT(showFullScreen()));
   QObject::connect(btnNormal, SIGNAL(clicked()),
                    &window, SLOT(showNormal()));

   window.show();
   return app.exec();
}

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов