以下是一个示例代码,演示如何监听窗口的resizeEvent事件,并在窗口尺寸发生变化时重新调整控件布局和大小。
#include <QApplication>
#include <QMainWindow>
#include <QWidget>
#include <QLayout>
#include <QDebug>
class MainWindow : public QMainWindow
{
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
// 创建一个主窗口并设置布局
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
centralWidget->setLayout(layout);
// 添加一些控件到布局中
layout->addWidget(new QLabel("Label 1", this));
layout->addWidget(new QLabel("Label 2", this));
setCentralWidget(centralWidget);
// 监听窗口的resizeEvent事件
connect(this, &MainWindow::resized, this, &MainWindow::onResize);
}
protected:
void resizeEvent(QResizeEvent *event) override
{
QMainWindow::resizeEvent(event);
// 发送自定义的resized信号
emit resized();
}
private slots:
void onResize()
{
qDebug() << "Window resized!";
// 在这里重新调整控件布局和大小的逻辑代码
}
signals:
void resized();
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
在上述代码中,我们创建了一个继承自QMainWindow的MainWindow类。在构造函数中,我们创建了一个主窗口,并设置了一个垂直布局,并向其中添加了两个QLabel控件。然后,我们连接了窗口的resized信号与自定义的onResize槽函数。在resizeEvent函数中,我们发送了自定义的resized信号。
当窗口尺寸发生变化时,会触发resizeEvent事件,从而调用onResize槽函数。在该槽函数中,你可以编写重新调整控件布局和大小的逻辑代码。
内容由零声教学AI助手提供,问题来源于学员提问