如何使用 qt designer 自动集中小部件?

How to centralize widget automatically with qt designer?

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

它看起来像居中,但它居中为标准 window 尺寸:

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

你快到了。 如果您添加 2 个垂直分隔符,将它们和您的水平布局放入垂直布局,最后将 mainwindow 上的所有内容放入网格布局,您将实现您正在寻找的东西。看起来像这样:

这样,无论 window 的大小如何,小部件都可以放置在 window 的正中央。只需确保 spacer 的 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());
}

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