如何根据窗口大小调整 QMainWindow 内容的大小

问题描述 投票:0回答:1

我有一个带有几个小部件的 QMainWIndow,其中之一是 QTableView。

主窗口可调整大小。

如何自动调整窗口内容、字体和所有内容的大小,即当调整窗口大小时,其内容也应该自动调整大小?

非常感谢您的帮助,谢谢。

qt qmainwindow
1个回答
2
投票

您应该将所有小部件放入布局中,当用户对 QMainWindow 的大小进行任何更改时,布局会自动调整 QMainWindow 内所有小部件的大小,您可以通过 Qt Creator IDE 和编码添加布局。

更新:

如果您在 Qt Creator 中添加布局,布局会自动编码在 moc 文件中,无需用户通过编码对其行为进行任何更改。

但通过类构造函数中的编码:

QVBoxLayout *layout = new QVBoxLayout(parent);

layout->addWidget(widget1);   
layout->addWidget(widget2);   
layout->addWidget(widget3);   

this->setLayout(layout);  

但是如果想改变QLabel的字体,这是通过QMainWindow中的resizeEvent来完成的,所以对于MainWindow大小的任何变化,都会触发resizeEvent,所以你使用这个代码:

mainwindow.h 中声明 resizeEvent:

protected:
    void resizeEvent(QResizeEvent* event);

mainwindow.cpp 实现 resizeEvent:

void MainWindow::resizeEvent(QResizeEvent *event)
{
    MainWindow::resizeEvent(event);
    if(this)
    {
        // QLabel process
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.