C++ 当小部件大小改变时如何获取信号
当小部件(C++ 当小部件大小改变时如何获取信号,c++,qt,qt5,C++,Qt,Qt5,当小部件(MyForm)的大小改变时,我需要执行一个操作 当小部件的大小改变时是否会发出信号?(我在文件中找不到) 我需要这样做: #include "myform.h" #include "ui_myform.h" MyForm::MyForm(QWidget *parent) : QWidget(parent), ui(new Ui::MyForm) { ui->setupUi(this); connect(this, SIGNAL(sizeChan
MyForm
)的大小改变时,我需要执行一个操作
当小部件的大小改变时是否会发出信号?(我在文件中找不到)
我需要这样做:
#include "myform.h"
#include "ui_myform.h"
MyForm::MyForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyForm)
{
ui->setupUi(this);
connect(this, SIGNAL(sizeChanged()), this, SLOT(refresh()));
}
MyForm::~MyForm()
{
delete ui;
}
void MyForm::refresh()
{
ui->label->setText( QString::number(this->width()) + ", " + QString::number(this->height()));
}
当小部件大小改变时,它“调用”刷新函数,该函数用当前的宽度和高度更新标签注意:这只是一个很容易复制的示例
当然我可以使用
QTimer
,例如:
#include "myform.h"
#include "ui_myform.h"
MyForm::MyForm(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyForm)
{
ui->setupUi(this);
timer_ = new QTimer(this);
connect(timer_, SIGNAL(timeout()), this, SLOT(refresh()));
timer_->start(100);
}
MyForm::~MyForm()
{
delete ui;
}
void MyForm::refresh()
{
ui->label->setText( QString::number(this->width()) + ", " + QString::number(this->height()));
}
但我认为这不是最好的解决办法
注意:我正在使用Qt 5.3。不需要创建信号,只需覆盖
resizeEvent()
并从该方法调用refresh:
*.h
protected:
void resizeEvent(QResizeEvent *event);
*.cpp
void MyForm::resizeEvent(QResizeEvent *event)
{
refresh();
QWidget::resizeEvent(event);
}
你需要重写。