在QT的UI界面,让Widget可以跟随窗体大小而改变
2023-09-14 09:05:25 时间
可以使用布局(Layout)机制让Widget(QWidget)随窗口一起缩放和移动。
Qt提供以下几种布局:
-
QHBoxLayout:将QWidget按照水平方向依次排列
-
QVBoxLayout:将QWidget按照垂直方向依次排列
-
QGridLayout:将QWidget按照行列划分为多个网格,根据网格位置排列
-
QFormLayout:将QWidget按照表单样式排列
使用布局的过程如下:
-
在Qt Designer的左侧对象列表中选择一个QWidget。
-
在右侧Widgets工具箱中选择一个布局。
-
双击布局,将它添加到QWidget上。
-
您可以在属性编辑器中进一步配置布局。
-
单击Qt Designer左上角的"窗口"菜单按钮,选择布局配置与在mainwindow.ui的宽高比例一致的宽高比例。
-
在QObject的"布局"属性处设置您选择的布局。
-
在构造函数中将widget添加到布局中。
-
在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模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
相关文章
- C++ Qt常用面试题整理(不定时更新)[通俗易懂]
- mfc控件工具栏怎么打开_Qt界面库
- 二、Qt定时器与文本编辑器制作《QT 入门到实战》
- C/C++ Qt 数据库与TreeView组件绑定
- 来自Qt交流群的群友提问
- Qt CMake怎能让我继续使用你
- VS中使用Qt方法详解
- Qt项目界面文件(.ui)及其作用(超详细)
- Qt定时器及实现(详解)
- 实现Linux下Qt应用静态编译的方法(linux下qt静态编译)
- 在Linux中安装Qt第三方库的指南(linux安装qt库)
- Linux虚拟机中安装Qt的指南(linux虚拟机安装qt)
- Qt蓝牙编程指南:在Linux系统上使用Qt开发蓝牙应用程序(qt蓝牙编程linux)
- Linux下的Qt编译器之旅(qt编译器linux)
- Linux Qt:快速下载指南(linuxqt下载)
- 使用 Qt 连接 MySql (qt使用mysql)
- 简明易懂的Linux下QT安装指南(linux下安装qt教程)
- 利用Linux系统和QT技术实现高效嵌入式应用程序开发(linux嵌入式qt)
- Linux下Qt编程实战指南(linuxqt编程)
- 快速使用QT进行MySQL数据库操作(qt使用mysql数据库)
- QT实现对Oracle数据库的操作教程(qt操作oracle)
- 利用Qt轻松操作Oracle数据库(qt操作oracle)
- Qt与SQLServer结合,提升开发效率(qt和sqlserver)
- 在Qt中编译Oracle环境(qt编译 oracle)