PDA

View Full Version : QPushButton resize event



gcubar
5th February 2011, 01:24
How I can know when a button has been resized?

Thanks.

helloworld
5th February 2011, 03:37
You could use an event filter, if you have a MainWindow class for example:



class QPushButton;

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = 0);
~MainWindow();

bool eventFilter(QObject *object, QEvent *event);

private:
QPushButton* _button;
};


In the constructor, I put:



MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
_button(new QPushButton)
{
setCentralWidget(_button);
_button->installEventFilter(this);
}


This way, MainWindow will receive all events sent to the button. The definition for eventFilter() could look like:



bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
if (_button == object && event->type() == QEvent::Resize) {
qDebug() << "button was resized!";
}

return QMainWindow::eventFilter(object, event);
}


You could also extend QPushButton and emit a signal when a resize event occurs. It all depends on your particular use-case.

gcubar
7th February 2011, 13:04
Thanks, this is what I needed.