首页 > 解决方案 > 如何使用 qt 设计器自动集中小部件?

问题描述

我正在全屏创建应用程序,但是在 qt 设计中编辑时没有这样的选项。因此,当我将小部件放在 qt 设计器上时,它看起来像这样:

在此处输入图像描述

看起来它是居中的,但它以标准窗口大小为中心:

在此处输入图像描述

现在看看当我增加窗口大小时会发生什么:

在此处输入图像描述

标签: qtqt-designer

解决方案


你快到了。如果您添加 2 个垂直间隔,将它们和您的水平布局放到垂直布局中,最后将主窗口上的所有内容放到网格布局中,您将实现您想要的。它看起来像这样: 主窗口预览 小部件树

这样,无论窗口大小如何,小部件都位于窗口的中心。只需确保将 spacers 的 sizeType 属性设置为 Expanding。 窗户

或者,您可以通过覆盖来实现相同的功能QMainWindow::resizeEvent。像这样的东西:

//In your .h file
protected:
    void resizeEvent(QResizeEvent *event) override;
//In your .cpp file
void MainWindow::resizeEvent(QResizeEvent *event)
{
    ui->pushButton->setGeometry(this->width()/2 - ui->pushButton->width()/2,
                                this->height()/2 - ui->pushButton->height()/2,
                                ui->pushButton->width(),
                                ui->pushButton->height());
}

它需要更多的编码,但允许更大的灵活性。


推荐阅读