qt - 如何使用 qt 设计器自动集中小部件?
问题描述
我正在全屏创建应用程序,但是在 qt 设计中编辑时没有这样的选项。因此,当我将小部件放在 qt 设计器上时,它看起来像这样:
看起来它是居中的,但它以标准窗口大小为中心:
现在看看当我增加窗口大小时会发生什么:
解决方案
你快到了。如果您添加 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());
}
它需要更多的编码,但允许更大的灵活性。
推荐阅读
- python - Python 返回(登录名、密码)或类似 null
- r - 根据 r 中另一列中的部分观察结果创建新列
- php - PHP:如何将一个字符串分成 4 个部分?
- flask - 无法使用 Flask-OIDC 和 Keycloak 访问 resource_access.client-test.roles
- c - 从一个位置复制 N 个字节
- c# - SSRS ReportExecutionServce.LoadReport 卡住
- c++ - C++ 正则表达式错误!方括号表达式不适用于 icase 标志
- docker-compose - 如何使用 yq 删除 YAML 文件中的属性?
- ios - React Native 播放 iOS 慢动作视频
- javascript - javascript - ES6 数组函数从数组创建对象