四、基本组件

news2024/11/18 19:41:51

1. Designer设计师

Designer程序是Qt官方推出的专为设计人员使用的UI设计工具,程序员可以使用此工具大幅降低UI设计的代码量。
Designer设计文件的格式是.ui,需要配合同名的头文件与源文件使用。.ui文件通常被称为界面文件,其内部是xml语法的代码。
当新建项目时,选中image.png

选项,此时的项目就会自带dialog.ui文件。

在这里插入图片描述

双击界面文件,可以直接使用QtCreator内置的Designer程序打开此文件。
image.png

2. 布局 Layout

可以把布局看做是一个透明的箱子,在布局中的组件会自动按照布局的规则排布,布局包括:
image.png

垂直/水平布局表示内部所有组件呈垂直/水平线性排布;格栅布局内部的组件会排布成m*n的格式;表单布局主要用于信息的输入。
image.png
取消布局可以使用image.png

布局常用属性如下:
image.png
布局支持嵌套,对于嵌套的内层布局而言,相当于外层布局的一个组件。
image.png
布局可以贴合窗口,需要选中出窗口后,点击一下布局的工具栏,此时布局可贴合窗口。
有时候需要在组件之间填充空白,除了可以使用一些布局或组件的属性外,还可以使用伸展器(QSpacer)组件,此组件专用于填充空白,本身运行不可见。
image.pngimage.png

3. ui指针

当项目中使用了界面文件后,可以在C++代码中随处可见ui指针成员,可以把此指针看做是界面文件在C++代码中的对象。
image.png
image.png

4. 基本组件

4.1 QWidget类

QWidget类是所有组件的基类,本次再来认识一些此类的属性。
image.png

4.2 QLabel 标签

QLabel是一个标签组件,用于显示文字或图片。
常用属性如下:

image.png
添加图片到项目中,操作步骤如下:

  1. 找到图片资源,格式要求为jpg、png、bmp,不要选择过大的图片(分辨率、文件大小)。
    iconfont-阿里巴巴矢量图标库
    素材网站
  2. 更改图片名称,名称建议为全英文、下划线和数字组合,且英文全小写,数字不能开头。
  3. 把图片放置到工作目录中。
  4. 在Qt Creator中选中项目名称,鼠标右键,点击“添加新文件”。
  5. 按照下图所示进行操作。
    image.png
  6. 在弹出的窗口中设置资源文件名称。
    在这里插入图片描述
  7. 在项目管理界面,直接点击完成。可以看到项目中多了一个.qrc的资源文件。
    image.png
  8. 选中qrc文件,点击添加前缀。image.png
  9. 再次点击添加里面的添加文件image.png,在弹出的对话框窗口中选中要添加的图片文件。添加成功后会在qrc文件中显示出来。
    在这里插入图片描述
  10. 点击image.png让资源文件可以被Designer找到,随后就可以在Designer中设置图片了。
    Qt可以完成一些简单的图像处理,但是建议在Qt使用图片之前预先处理好图片,提升程序的运行效率。

4.3 QAbstractButton 按钮类

QAbstractButton是所有按钮类的抽象基类。
image.png
QAbstractButton常用属性如下:
image.png
按钮类常用信号:
image.png
多个按钮组件的信号槽可以使用QButtonGroup进行分组后连接。

// 构造函数
// 需要手动管理堆内存对象
QButtonGroup::QButtonGroup(QObject * parent = 0)
// 添加按钮到按钮组
// 参数1:按钮对象
// 参数2:编号
void QButtonGroup::addButton(QAbstractButton * button, 
int id = -1)

image.png 这些信号对应了单个按钮的四种触发情况,参数1用于判断哪个按钮被触发。
需要注意的是,QButtonGroup会导致QCheckBox变单选,此时需要手动关闭互斥性。

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QDebug>
#include <QButtonGroup> // 按钮组

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;
    QButtonGroup* group;

private slots:
    // 与void	toggled(bool checked)连接
    // 表示选中状态改变
    void toggledSlot(bool);
    // 与按钮组信号连接
    void btnToggledSlot(int,bool);
};

#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    connect(ui->radioButtonBurger,SIGNAL(toggled(bool)),
            this,SLOT(toggledSlot(bool)));

    // 创建按钮组对象
    group = new QButtonGroup(this);
    // 添加按钮对象
    group->addButton(ui->checkBoxTea,1);
    group->addButton(ui->checkBoxCoffee,2);
    group->addButton(ui->checkBoxDrink,3);
    // 手动关闭互斥
    group->setExclusive(false);

    connect(group,SIGNAL(buttonToggled(int,bool)),
            this,SLOT(btnToggledSlot(int,bool)));
}

void Dialog::toggledSlot(bool checked)
{
    if(checked)
        qDebug() << "吃汉堡";
    else
        qDebug() << "不吃汉堡";
}

void Dialog::btnToggledSlot(int id, bool checked)
{
    if(id == 1)
        if(checked)
            qDebug() << "喝茶";
        else
            qDebug() << "不喝茶";
    else if(id == 2)
        if(checked)
            qDebug() << "喝咖啡";
        else
            qDebug() << "不喝咖啡";
    else if(id == 3)
        if(checked)
            qDebug() << "喝咖啡";
        else
            qDebug() << "不喝咖啡";
}

Dialog::~Dialog()
{
    delete ui;
}

4.4 QLineEdit 单行文本编辑框

用于输入一个单行字符串,常用属性如下:
image.png
常用信号函数如下:
image.png

4.5 QComboBox 组合框

就是一个下拉菜单,功能类似于QRadioButton。
常用属性如下:
image.png
常用信号如下:
image.png
image.png

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QDebug>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;

private slots:
    // 高光信号槽
    void highlightedSlot(QString);
};

#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    connect(ui->comboBox,SIGNAL(highlighted(QString)),
            this,SLOT(highlightedSlot(QString)));
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::highlightedSlot(QString text)
{
    qDebug() << text;
}

4.6一组与数字相关的组件

在这里插入图片描述

常用属性如下:
image.png
部分组件拥有方向属性orientation

常用信号:

// value属性值改变时发射
// 参数是当前的value值
void	valueChanged(int value)

通过QDial控制其他控件

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;

private slots:
    // 与void valueChanged(int value)信号连接
    void valueChangedSlot(int);
};

#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);

    connect(ui->dial,SIGNAL(valueChanged(int)),
            this,SLOT(valueChangedSlot(int)));
}

Dialog::~Dialog()
{
    delete ui;
}

void Dialog::valueChangedSlot(int value)
{
    ui->spinBox->setValue(value);
    ui->progressBar->setValue(value);
    ui->horizontalScrollBar->setValue(value);
    ui->verticalScrollBar->setValue(value);
    ui->horizontalSlider->setValue(value);
    ui->verticalSlider->setValue(value);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1118225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(2023|ICML,LLM,标记掩蔽,并行解码)Muse:使用掩蔽生成 Transformer 的文本到图像生成

Muse: Text-To-Image Generation via Masked Generative Transformers 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 模型 2.1. 预训练文本编码器 2.2. 使用 V…

RabbitMQ队列及交换机的使用

目录 一、简单模型 1、首先控制台创建一个队列 2、父工程导入依赖 3、生产者配置文件 4、写测试类 5、消费者配置文件 6、消费者接收消息 二、WorkQueues模型 1、在控制台创建一个新的队列 2、生产者生产消息 3、创建两个消费者接收消息 4、能者多劳充分利用每一个消…

Power BI 傻瓜入门 2. Power BI的人员、方式和内容

本章内容包括&#xff1a; 识别潜在的企业Power BI用户使用Power BI解决数据生命周期问题区分使用Power BI生产的分析产品的类型 企业商业智能&#xff08;BI&#xff09;解决方案并非一刀切&#xff0c;这就是为什么像微软这样的供应商在Power BI利基市场的产品营销和分销中…

unity NPR 卡通渲染

文章目录 一、 介绍二、 素材准备三、 步骤四、 shader代码五、工程链接 一、 介绍 NPR是计算机图形学中的一类&#xff0c;即非真实感绘制(Non-photorealistic rendering)&#xff0c;主要用于模拟艺术式的绘制风格&#xff0c;也用于发展新绘制风格&#xff0c;形式一般是卡…

零基础Linux_20(进程信号)内核态和用户态+处理信号+不可重入函数+volatile

目录 1. 内核态和用户态 1.1 内核态和用户态概念 1.2 内核态和用户态转化 2. 处理信号 2.2 捕捉信号 2.2 系统调用sigaction 3. 不可重入函数 4. volatile关键字 5. SIGCHLD信号&#xff08;了解&#xff09; 6. 笔试选择题 答案及解析 本篇完。 1. 内核态和用户态…

气象台使用vr模拟仿真实训教学降低成本投入

气候仿真实验室用于模拟高低温、高湿、干燥、阳光光照、降雨、降雪、覆冰、雾天与强风等多种环境适应性试验等气候和环境条件&#xff0c;在环境试验中&#xff0c;温度、湿度、光照、降雨这些常见的仿真环境都很容易实现。而比较少见的雾天、强风、降雪等环境就比较难。因此为…

《动手学深度学习 Pytorch版》 9.8 束搜索

本节将介绍几大&#xff1a; 贪心搜索&#xff08;greedy search&#xff09;策略 穷举搜索&#xff08;exhaustive search&#xff09; 束搜索&#xff08;beam search&#xff09; 9.8.1 贪心搜索 贪心搜索已用于上一节的序列预测。对于输出序列的每一时间步 t ′ t t′…

【FPGA零基础学习之旅#16】嵌入式块RAM-双口ram的使用

&#x1f389;欢迎来到FPGA专栏~双口ram的使用 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能指正…

SystemVerilog学习(3)——数组

一、定宽数组 相比于Verilog-1995中的一维定宽数组&#xff0c;SV提供了更加多样的数组类型&#xff0c;功能上也大大增强。 1.1 定宽数组的声明与初始化 Verliog要求在声明中必须给出数组的上下界。因为几乎所有的数组都使用0作为索引下届&#xff0c;所以SV允许只给出数组的…

UART、SPI、I2C通信协议超全入门教程

本文引注: https://mp.weixin.qq.com/s/lVWK8xlDt7cOLi8WHYSuPg 1.SPI协议 1.基础 2.简介 3.工作原理 4.SPI数据传输步骤与优缺点 2.UART协议

抖音同城榜:探索城市新潮流

随着科技的飞速发展&#xff0c;短视频已经成为了人们日常生活中不可或缺的一部分。作为短视频领域的佼佼者&#xff0c;抖音一直致力于为用户带来更丰富、更有趣的短视频内容。抖音同城榜应运而生&#xff0c;成为了最新、最热门的话题聚集地&#xff0c;吸引了大量潮流达人和…

Java SSL/TLS证书认证逻辑

前言 最近做项目使用httpclient转发https请求&#xff0c;但是遇到一些坑&#xff0c;尤其是证书的认证&#xff0c;证书认证一般都是单向的&#xff0c;除非相互访问&#xff0c;证书一般基于host&#xff0c;但是如果访问需要ip&#xff0c;那么JDK默认的认证就会不通过&…

Unity⭐️Win和Mac安卓打包环境配置

文章目录 🟥 配置Android SDK1️⃣ 配置 SDK Platforms2️⃣ 配置 SDK Tools🎁 Android SDK Build-Tools🎁 Android SDK Command-line Tools(latest)🎁 Android SDK Tools(Obsolete)🟧 配置NDK🟩 配置JDK前情提示: 此方法适用于Windows/Mac 在配置时注意开启 🪜 …

shell变量之学习笔记

shell变量之学习笔记 Shell变量概念1 shell变量分类&#xff1a;2 变量的赋值3 变量赋值格式&#xff1a;4 变量命名方式5 变量声明6 变量引用7 变量清除8 变量只读9 内部参数变量10 位置参数变量11 退出和返回状态12 命令替换13 read命令14 字符串长度与截取15 字符串替换16 变…

FL studio21永久激活码 附带一键下载安装包

玩音乐的朋友&#xff0c;对FL studio肯定不陌生&#xff0c;目前最新的版本是FL studio21&#xff0c;这是一款非常强大且专业的音频制作软件&#xff0c;而且还可以编曲、剪辑、录音、混音等等之类的创作操作&#xff0c;使你的计算机成为一个全功能录音室。下面小编就来和大…

15.Tensor Product vs. Kronecker Product

此处是为澄清她两的区别&#xff0c; 这两个事物 都用的相同的符号表示&#xff0c; 即这个圈数符号&#xff0c; 它在数学中有许多不同的含义&#xff0c; 本文讨论的是&#xff1a;“张量积”&#xff0c;它是对张量的运算&#xff1b; 以及“Kronecker ”积&#xff0c;…

C#WPFPrism框架模块化应用实例

本文实例演示C#WPFPrism框架模块化应用实例。 首先创建WPF项目,修改App相关文件内容,以便使用prism。 一、添加模块 解决方案中添加ModuleA和ModuleB两个项目 删除不用的窗体,添加自定义窗体 修改ModuleA和ModuleB的输出类型

最近又火了!吴恩达《生成式 AI》重磅发布!

吴恩达教授可能是许多人接触 AI 的启蒙课导师吧&#xff0c;在过去的十多年中&#xff0c;他的《Machine Learning》课程已经对数百万的学习者产生了积极影响。 而随着 ChatGPT 的推出&#xff0c;大模型和各类生成式人工智能&#xff08;GenAI&#xff09;技术在行业内外备受…

激活WinEdt 11.1

激活WinEdt 11.1 打开WinEdt 11.1&#xff0c;点击help 点击Register WinEdtname输入&#xff1a;*60[20220501] Warez_Down [RU-BOARD] (100 users)Code输入&#xff1a;4049089118892183088 即可激活。 参考文章https://blog.csdn.net/j_l_sheng/article/details/125456662

内存的基础知识

一、概述 1.内存&#xff1a; 存放数据&#xff0c;为了缓和CPU与硬盘之间的速度差异&#xff0c;程序执行前会先放入内存中再让CPU处理。 由存储单元(存放数据的最小单元&#xff0c;每个单元都会对应一个地址)构成 2.常用数量单位&#xff1a; 1K(千)2的10次方 1M(兆)2的20次…