Как назначить обратный вызов, когда пользователь изменяет размер QMainWindow?

Я не смог найти схему, похожую на учебник, для события изменения размера в QMainWindow, и я не видел какой-либо опции для добавления события изменения размера в раскрывающемся меню в окне дизайна Qt.

Я новичок в Qt. Я хотел бы написать функцию слота для события изменения размера QMainWindow. Есть ли такое событие? Как я могу это сделать?


person Barney Szabolcs    schedule 10.10.2012    source источник


Ответы (2)


Существует событие изменения размера. Чтобы выполнить пользовательскую обработку события, вам потребуется создать собственный обработчик события изменения размера. В вашем случае вам нужно будет создать класс, производный от QMainWindow, и повторно реализовать resizeEvent функция. Ваш код будет выглядеть примерно так:

void MyMainWindow::resizeEvent(QResizeEvent* event)
{
   QMainWindow::resizeEvent(event);
   // Your code here.
}

В примере Qt Scribble также есть пример переопределения событие изменения размера (хотя и не в главном окне).

person RA.    schedule 10.10.2012
comment
Я бы поместил личный код перед вызовом QMainWindow::resizeEvent(event), а не после, потому что вы можете получить информацию из этого события, прежде чем передать его в QMainWindow. Или даже изменить его перед переходом к QMainWindow. - person Patapoom; 07.05.2020

Это работает в Qt5 со мной, например. чтобы изменить размер значка в QTableWidget:

mainWindow.h
...
private:
void resizeEvent(QResizeEvent*);
...

mainWindow.cpp
...
void mainWindow::resizeEvent(QResizeEvent*)
{
    tableWidget->setIconSize(QSize(tableWidget->size()/7)); //7 or whatever number you need it to get the full icon size
}
person Ivanovic    schedule 01.03.2020
comment
resizeEvent() не является слотом. - person Patapoom; 07.05.2020