【发布时间】:2018-01-05 18:54:20
【问题描述】:
当小部件 (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()));
}
当小部件尺寸发生变化时,它会“调用”refresh 函数,该函数使用当前的width 和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。
【问题讨论】:
-
你需要覆盖
QWidget::resizeEvent。