QT-4-常用类和组件

命名规范(熟悉)

1. 类名、枚举必须使用大驼峰命名法(帕斯卡命名法),即每个单词的首字母大写,例如ComputerInfo.h;Qt自带的类都是以Q开头的。

2. 函数、变量名使用小驼峰命名法(驼峰命名法),即第一个单词全小写,其它单词的首字母大写,例如autoFillBackground、backgroundRole。

3. 常量使用全大写,单词之间使用下划线分割。

QString类(掌握)

QString类是Qt中的字符串类,Qt中不使用char*和std:string。QString类使用Unicode编码(统一码、万国码),而不是ASCII码。每一个字符都是一个16位的QChar,而不是8位的char,所以QString处理中文没有任何问题,而且一个汉字算作一个字符。QString类不需要单独引入头文件。

  • 数字转字符串

[static]

参数一:要转换的整数

参数二:进制,默认为十进制

返回值:转换之后的字符串

参数一:要转换的整数

参数二:进制,默认为十进制

返回值:转换之后的字符串,支持链式调用

  • 字符串转数字

参数一:转换的结果

参数二:进制,默认为10进制

返回值:转换的结果

QList类(掌握)

Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。Qt中的容器类对Qt环境单独做了存储上的速度优化,并且是线程安全(可以同时被多线程访问)的,还可以降低编译生成的可执行文件大小。

QList类是Qt中最常用的容器类,QList是一种顺序容器。

    QList<QString> list;
    // 增加数据
    list.append("hello"); //向后追加
    list.prepend("abc"); //向前追加
    list.push_back("向后追加");
    list.push_front("向前追加");
    list << "你好" << "再见" << "AAA" << "2022";
    // 参数一:位置
    // 参数二:插入的元素
    list.insert(1,"第二");
    // 支持直接输出
    qDebug() << list;
    // 删除数据
    list.pop_back(); // 删除最后一个数据
    list.pop_front(); // 删除开始的数据
    list.removeFirst(); // 删除第一个数据
    list.removeLast(); // 删除最后一个数据
    qDebug() << list;

    list.append(list);
    list << "再见"; // 已出现3次"再见"
    qDebug() << list;
    // 删除第一次出现的某元素值
    list.removeOne("hello");
    // 删除固定位置的元素
    list.removeAt(4);
    // 删除所有 某元素
    list.removeAll("再见");
    qDebug() << list << "元素数:" << list.size() << list.length() << list.count();
    // 修改元素
    list.replace(1,"第二");
    qDebug() << list.at(1) << list[1];
    // 遍历
    // for循环
    for(int i=0;i<list.size();i++)
    {
        qDebug() << list.at(i);
    }
    // C++ 风格迭代器
    for(QList<QString>::const_iterator iter = list.begin();
        iter != list.end();iter++)
    {
        qDebug() << *iter;
    }
    // Java 风格迭代器
    QListIterator<QString> iter(list);
    while(iter.hasNext()) // 判断后续还有无数据
    {
        qDebug() << iter.next(); //先获得后面的元素,再向后移动一个位置
    }

建议使用C++ STL风格或Java风格的迭代器遍历。

QStringList

是一个存储元素类型为QString的QList类,其基类是QList<QString>,可以等同于其基类的使用。

创建C++类(掌握)

创建步骤如下:

1. 选中项目,鼠标右键,点击“添加新文件”。

2. 在弹出的窗口中,按照下图方式选择后,点击“选择”

3. 在弹出的窗口中输入类名,然后点击“下一步”。

4. 直接点击"完成",创建完毕。

QMap(掌握)

QMap是Qt中的关联容器,基本等同C++ STL中的map类型。

map是键值对的映射,键(key)表示数据的名称,值(value)表示数据值本身。键必须是唯一,但值可以不唯一。

    QMap<QString,int> map;
    // 添加数据
    map["身高"] = 168;
    map.insert("体重",110);
    // 取出数据之前最好先判断一下是否存在
    if(map.contains("身高"))
    {
        // 取出数据
        // value支持第二个参数设定默认值
        // 如果使用value函数取出值可以不判断是否存在键
        qDebug() << map["身高"] << map.value("身高");
    }
    // 移除身高键值对
    map.remove("身高");
    qDebug() << map.size() << map.count();
    // 修改
    map["体重"] = 120;
    map.insert("体重",130);
    qDebug() << map.value("体重");

    qDebug() << map.value("年龄",-1);
    // C++ STL风格迭代器
    for(QMap<QString,int>::const_iterator iter=map.begin();
        iter != map.end();iter++)
    {
        qDebug() << iter.key() << iter.value();
    }

    // Java风格迭代器
    QMapIterator<QString,int> iter(map);
    while(iter.hasNext())
    {
        iter.next(); // 先移动
        // 取出键值对
        qDebug() << iter.key() << iter.value();
    }

Qt数据类型(熟悉)

为了确保Qt在各个平台拥有统一的数据类型长度,Qt设定了一些数据类型在跨平台时代替传统的数据类型。

QVariant

是Qt中的通用数据类型,绝大多数Qt的常用类型都可以与此类型互相转换。

使用构造函数来让其它数据类型转换为QVariant类型,使用to开头的转换函数转换回源类型。

    // 跨平台数据类型
    qint64 a = 12345678;
    int b = a;
    qDebug() << a << b;
    // 转换为通用类型
    QVariant v(a);
    qDebug() << v.toInt();
//    qDebug() << v.toString(); 间接完成“类型转换”

时间日期类(掌握)

Qt中使用QDate类来处理日期,使用QTime类来处理时间,这两个类合二为一QDateTime类,即QDateTime类既可以处理日期又可以处理时间。

返回当前时间(毫秒数)

获得当前时间的QDateTime对象,分别为当前时区和东一区。

需要注意的是,获取的时间是基于本机时间。

返回制定格式的时间和日期字符串,参数是制定的格式

常用格式如下:

字符

意义

d

天,不补零显示,1-31

dd

天,补零显示,01-31

M

月,不补零显示,1-12

MM

月,补零显示,01-12

yy

年,两位显示,00-99

yyyy

年,4位数字显示,如 2016

h

小时,不补零,0-23 或 1-12 (如果显示 AM/PM)

hh

小时,补零2位显示,00-23 或 01-12 (如果显示 AM/PM)

H

小时,不补零,0-23 (即使显示 AM/PM)

HH

小时,补零显示,00-23 (即使显示 AM/PM)

m

分钟,不补零,0-59

mm

分钟,补零显示,00-59

z

毫秒,不补零,0-999

zzz

毫秒,补零 3 位显示,000-999

AP或A

使用 AM/pm 显示

ap或a

使用 am/pm 显示

相关组件(熟悉)

QDateEdit

QTimeEdit

QDateTimeEdit

QCalendarWidget(类似QDateEdit功能)

以QDateTimeEdit为例,常见的功能如下:

QTimer 定时器(重点)

QTimer类似于硬件定时器,可以周期性间隔触发某个代码,也可以延迟调用某个代码。

构造函数:

是否是一次性的。

间隔时间,单位毫秒,如果是一次性的就是倒计时时间。

定时器是否运行中

下次触发剩余时间

槽函数:

启动定时器和停止定时器

注意,如果定时器正在运行,此时调用start函数会停止当前的定时器并重新开始。如果是一次性的定时器,只能启动一次。

信号函数:

定时器每次触发都发送此信号。

注意:所有信号槽的连接的前提是发射者和接收者对象均已创建完毕。

以一个数字时钟的例子来演示周期性定时器的使用。

QLCDNumber 用于模拟液晶屏幕显示数字(也能显示部分非数字字母和字符)。

数字时钟的位数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值