Изменение и получение размеров окна

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

  • resize() — изменяет текущий размер окна. Если содержимое окна не помещается в установленный размер, то размер будет выбран так, чтобы компоненты поместились без искажения, при условии, что используются менеджеры геометрии. Следовательно, заданный размер может не соответствовать реальному размеру окна. Если используется абсолютное позиционирование, то компоненты могут оказаться наполовину или полностью за пределами видимой части окна. Прототипы метода:
void resize(int w, int h)
void resize(const QSize &)

Пример:

window.resize(350, 70);
  • setGeometry() — изменяет одновременно положение компонента и его текущий размер. Первые два параметра задают координаты левого верхнего угла (относительно родительского компонента или экрана), а третий и четвертый параметры — ширину и высоту. Прототипы метода:
void setGeometry(int x, int y, int w, int h)
void setGeometry(const QRect &)

Пример:

window.setGeometry(100, 100, 350, 70);
  • setFixedSize() — задает фиксированный размер. Изменить размеры окна с помощью мыши нельзя. Кнопка Развернуть в заголовке окна становится неактивной. Прототипы метода:
void setFixedSize(int w, int h)
void setFixedSize(const QSize &s)

Пример:

window.setFixedSize(350, 70);
  • setFixedWidth() — задает фиксированный размер только по ширине. Изменить ширину окна с помощью мыши нельзя. Прототип метода:
void setFixedWidth(int w)
  • setFixedHeight() — задает фиксированный размер только по высоте. Изменить высоту окна с помощью мыши нельзя. Прототип метода:
void setFixedHeight(int h)
  • setMinimumSize() — задает минимальный размер. Прототипы метода:
void setMinimumSize(int minw, int minh)
void setMinimumSize(const QSize &)

Пример:

window.setMinimumSize(350, 70);
  • setMinimumWidth() и setMinimumHeight() — задают минимальный размер только по ширине и высоте соответственно. Прототипы методов:
void setMinimumWidth(int minw)
void setMinimumHeight(int minh)
  • setMaximumSize() — задает максимальный размер. Прототипы метода:
void setMaximumSize(int maxw, int maxh)
void setMaximumSize(const QSize &)
  • setMaximumWidth() и setMaximumHeight() — задают максимальный размер только по ширине и высоте соответственно. Прототипы методов:
void setMaximumWidth(int maxw)
void setMaximumHeight(int maxh)
  • setBaseSize() — задает базовые размеры. Прототипы метода:
void setBaseSize(int basew, int baseh)
void setBaseSize(const QSize &)
  • adjustSize() — подгоняет размеры компонента под содержимое. При этом учитываются рекомендуемые размеры, возвращаемые методом sizeHint(). Прототип метода:
void adjustSize()

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

  • width() и height() — возвращают текущую ширину и высоту соответственно. Прототипы методов:
int width() const
int height() const

Пример:

window.resize(350, 70);
qDebug() << window.width() << window.height(); // 350 70
  • size() — возвращает экземпляр класса QSize, содержащий текущие размеры. Прототип метода:
QSize size() const

Пример:

window.resize(350, 70);
qDebug() << window.size().width()
         << window.size().height(); // 350 70
  • minimumSize() — возвращает экземпляр класса QSize, содержащий минимальные размеры. Прототип метода:
QSize minimumSize() const
  • minimumWidth() и minimumHeight() — возвращают минимальную ширину и высоту соответственно. Прототипы методов:
int minimumWidth() const
int minimumHeight() const
  • maximumSize() — возвращает экземпляр класса QSize, содержащий максимальные размеры. Прототип метода:
QSize maximumSize() const
  • maximumWidth() и maximumHeight() — возвращают максимальную ширину и высоту соответственно. Прототипы методов:
int maximumWidth() const
int maximumHeight() const
  • baseSize() — возвращает экземпляр класса QSize, содержащий базовые размеры. Прототип метода:
QSize baseSize() const
  • sizeHint() — возвращает экземпляр класса QSize, содержащий рекомендуемый размер компонента. Если возвращаемые размеры являются отрицательными, то считается, что нет рекомендуемого размера. Прототип метода:
virtual QSize sizeHint() const
  • minimumSizeHint() — возвращает экземпляр класса QSize, содержащий рекомендуемый минимальный размер компонента. Если возвращаемые размеры являются отрицательными, то считается, что нет рекомендуемого минимального размера. Прототип метода:
virtual QSize minimumSizeHint() const
  • rect() — возвращает экземпляр класса QRect, содержащий координаты и размеры прямоугольника, в который вписан компонент. Прототип метода:
QRect rect() const

Пример:

window.setGeometry(100, 100, 350, 70);
QRect rect = window.rect();
qDebug() << rect.left() << rect.top();     // 0 0
qDebug() << rect.width() << rect.height(); // 350 70
  • geometry() — возвращает ссылку на экземпляр класса QRect, содержащий координаты относительно родительского компонента. Прототип метода:
const QRect &geometry() const

Пример:

window.setGeometry(100, 100, 350, 70);
QRect rect = window.geometry();
qDebug() << rect.left() << rect.top();     // 100 100
qDebug() << rect.width() << rect.height(); // 350 70

При изменении и получении размеров окна следует учитывать, что:

  • размеры не включают высоту заголовка окна и ширину границ;
  • размер компонентов может изменяться в зависимости от настроек стиля. Например, на разных компьютерах может быть указан шрифт разного наименования и размера. Поэтому от указания фиксированных размеров лучше отказаться;
  • размер окна может изменяться в промежутке между получением значения и действиями, выполняющими обработку этих значений в программе. Например, сразу после получения размера пользователь изменил размеры окна с помощью мыши.

Чтобы получить размеры окна, включая высоту заголовка и ширину границ, следует воспользоваться методом frameSize(). Метод возвращает экземпляр класса QSize. Прототип метода:

QSize frameSize() const

Обратите внимание на то, что полные размеры окна доступны только после отображения окна. До этого момента размеры совпадают с размерами окна без учета высоты заголовка и ширины границ. Пример получения полного размера окна:

window.resize(350, 70);                  // Задаем размеры
// ...
window.show();                           // Отображаем окно
qDebug() << window.width()
         << window.height();             // 350 70
qDebug() << window.frameSize().width()
         << window.frameSize().height(); // 366 109

Чтобы получить координаты окна с учетом высоты заголовка и ширины границ следует воспользоваться методом frameGeometry(). Прототип метода:

QRect frameGeometry() const

Обратите внимание на то, что полные размеры окна доступны только после отображения окна. Пример:

window.setGeometry(100, 100, 350, 70);
// ...
window.show();                             // Отображаем окно
QRect rect = window.geometry();
qDebug() << rect.left() << rect.top();     // 100 100
qDebug() << rect.width() << rect.height(); // 350 70
rect = window.frameGeometry();
qDebug() << rect.left() << rect.top();     // 92 69
qDebug() << rect.width() << rect.height(); // 366 109

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

Помощь сайту

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

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