QT(3)

四、基本组件

1. Designer设计师(掌握)

Qt Designer 是 Qt 提供的可视化界面设计工具,支持通过拖拽组件快速构建 GUI 界面,生成的界面文件以 .ui格式保存(基于 XML 的标签语言)。

  • ​​核心功能​​:

    • 在 Qt Creator 中创建项目时勾选"界面文件"选项,自动生成与窗口类关联的 .ui文件。

    • 所有 Designer 操作均可通过 C++ 代码实现(如布局管理、信号槽连接)。

  • ​​代码集成​ ​:通过 ui->setupUi(this)将界面与逻辑绑定,组件通过 ui->组件名访问。


2. 布局管理(Layout)(掌握)

布局通过"透明盒子"模式管理组件排列,支持自适应窗口缩放。

常见布局类型
类型 特点
​​垂直布局​​ 组件竖向排列(QVBoxLayout)
​​水平布局​​ 组件横向排列(QHBoxLayout)
​​网格布局​​ 组件按 n×m 表格排列(QGridLayout)
​​表单布局​​ 专为输入表单设计(QFormLayout)
布局操作技巧
  • ​​贴合窗口​​:选中窗口对象后点击布局按钮,使布局自动适配窗口边缘。

  • ​​填充空白​​:添加"伸展组件(Stretch)"填充剩余空间。

  • ​​嵌套布局​​:外层布局可将内层布局视为子组件,实现复杂界面。


3. QWidget类(掌握)

所有界面组件的基类,代表一个矩形窗口区域,支持嵌套和事件处理。

  • ​​关键属性(Designer 中可见)​​:

    • ​​大小策略(Size Policy)​​:控制组件在布局中的伸缩行为(默认策略适配多数场景)。

4. 界面文件与C++代码的关系(熟悉)

  • ​​.ui文件​ ​:通过 Qt Designer 设计的界面描述文件,编译后生成对应的 C++ 头文件(如 ui_mainwindow.h)。

  • ​​代码绑定​ ​:在窗口类构造函数中调用 ui->setupUi(this)初始化界面。


5. QLabel标签(掌握)

5.1 基本属性
  • ​​功能​​:显示静态文本或图片,不支持用户交互(无信号函数)。

  • ​​命名规范​ ​:默认命名格式为"标签名称_序号"(如 labelPic),双击可修改文本。

5.2 资源库管理
  • ​​图片格式​​:支持 JPG(无透明)、PNG(含透明)、GIF(动态图)。

  • ​​导入步骤​​:

    1. 将图片文件(无中文名)放入项目目录。

    2. 右键项目 → "添加新文件" → 选择 Qt 资源文件(.qrc)。

    3. 在资源文件中添加图片路径,生成虚拟路径(如 :/new/prefix1/logo.png)。

5.3 代码操作示例
复制代码
// 加载并缩放图片  
QPixmap pic(":/new/prefix1/logo.png");  
QSize size(ui->label->width(), ui->label->height());  
pic = pic.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);  
ui->label->setPixmap(pic);
5.4 动态图播放(QMovie)
复制代码
// 播动图  
QMovie *movie = new QMovie(":/new/prefix1/kunkun.gif", this);  
ui->labelPic->setMovie(movie);  
movie->start();

6. QAbstractButton按钮类(掌握)

按钮基类,包含通用属性和信号槽机制。

6.1 按钮样式设置
  • ​​图标添加​ ​:通过 Qt 资源管理器导入图标(如 https://www.iconfont.cn/),设置 icon属性。

  • ​​去边框​ ​:通过样式表 border: none; background-color: transparent;实现透明效果。

6.2 信号与槽
  • ​​单选按钮(QRadioButton)​​:

    复制代码
    connect(ui->radioButton_3, SIGNAL(toggled(bool)), this, SLOT(toggledSlot(bool)));
  • ​​按钮分组(QButtonGroup)​​:

    复制代码
    QButtonGroup *btp = new QButtonGroup(this);  
    btp->addButton(ui->checkBox, 1);  // 按钮ID为1  
    connect(btp, SIGNAL(buttonToggled(int,bool)), this, SLOT(buttonToggledSlot(int,bool)));

7. QLineEdit单行文本输入框(掌握)

7.1 常用信号
  • ​​returnPressed()​​:回车键触发。

  • ​​selectionChanged()​​:选中文本变化时触发。

7.2 代码示例
复制代码
// 获取输入内容  
connect(ui->lineEdit, SIGNAL(returnPressed()), this, SLOT(returnPressedSlot()));  

void Dialog::returnPressedSlot() {  
    qDebug() << "输入内容:" << ui->lineEdit->text();  
}
相关推荐
Ada's2 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
2601_962885722 小时前
如何用 Python 计算 TRIX 三重指数平滑均线指标?
开发语言·python
还卿一钵无情泪3 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
Nil2083 小时前
leetcode 118杨辉三角
算法·leetcode·职场和发展
倔强的石头1064 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
传人once4 小时前
页面中心圆圈放大效果如何写
开发语言·javascript·ecmascript
NeilYuen4 小时前
【C++】STL源码仿写(二):vector
开发语言·c++
蜗牛互联网5 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
郝学胜_神的一滴5 小时前
游戏引擎原理与实践 04:拆解引擎基础系统与内存管理
c++·游戏
wanderist.5 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法