在QT的UI界面,让Widget可以跟随窗体大小而改变

可以使用布局(Layout)机制让Widget(QWidget)随窗口一起缩放和移动。

Qt提供以下几种布局:

  • QHBoxLayout:将QWidget按照水平方向依次排列

  • QVBoxLayout:将QWidget按照垂直方向依次排列

  • QGridLayout:将QWidget按照行列划分为多个网格,根据网格位置排列

  • QFormLayout:将QWidget按照表单样式排列

使用布局的过程如下:

  1. 在Qt Designer的左侧对象列表中选择一个QWidget。

  2. 在右侧Widgets工具箱中选择一个布局。

  3. 双击布局,将它添加到QWidget上。

  4. 您可以在属性编辑器中进一步配置布局。

  5. 单击Qt Designer左上角的"窗口"菜单按钮,选择布局配置与在mainwindow.ui的宽高比例一致的宽高比例。

  6. 在QObject的"布局"属性处设置您选择的布局。

  7. 在构造函数中将widget添加到布局中。

  8. 在resize事件中重置布局大小。

以下是一个示例(在主窗口类MainWindow的构造函数中添加):

// 创建垂直布局
QVBoxLayout *layout = new QVBoxLayout();
QWidget *widget = new QWidget(this); // 在MainWindow中创建QWidget
widget->setLayout(layout);
​
// 创建按钮并添加到布局中
QPushButton *button1 = new QPushButton("Button1");
layout->addWidget(button1, 0, Qt::AlignTop);
​
QPushButton *button2 = new QPushButton("Button2");
layout->addWidget(button2, 0, Qt::AlignTop);
​
// 设置widget为MainWindow的中心窗口
this->setCentralWidget(widget);
​
// 添加resize事件监听器,当窗口缩放时更新布局大小
connect(this, SIGNAL(resized()), this, SLOT(onResized()));

下面是重置布局尺寸的代码:

void MainWindow::onResized()
{
    QWidget *widget = this->centralWidget();
    widget->resize(this->size());
}

这样,当您调整主窗口的大小时,QWidget和其中的按钮将跟随窗口一起缩放和移动。

希望这能够帮助您实现自适应QWidget大小和位置。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值