You could use an event filter, if you have a MainWindow class for example:
{
Q_OBJECT
public:
~MainWindow();
private:
};
class QPushButton;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
bool eventFilter(QObject *object, QEvent *event);
private:
QPushButton* _button;
};
To copy to clipboard, switch view to plain text mode
In the constructor, I put:
MainWindow
::MainWindow(QWidget *parent
){
setCentralWidget(_button);
_button->installEventFilter(this);
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
_button(new QPushButton)
{
setCentralWidget(_button);
_button->installEventFilter(this);
}
To copy to clipboard, switch view to plain text mode
This way, MainWindow will receive all events sent to the button. The definition for eventFilter() could look like:
{
if (_button
== object
&& event
->type
() == QEvent::Resize) { qDebug() << "button was resized!";
}
}
bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if (_button == object && event->type() == QEvent::Resize) {
qDebug() << "button was resized!";
}
return QMainWindow::eventFilter(object, event);
}
To copy to clipboard, switch view to plain text mode
You could also extend QPushButton and emit a signal when a resize event occurs. It all depends on your particular use-case.
Bookmarks