首页 > 其他分享 >day05(Qt)常用类

day05(Qt)常用类

时间:2024-10-20 13:46:58浏览次数:8  
标签:常用 定时器 Qt int 数据类型 day05 QString QDateTime

目录

常用类

1. QString 字符串类(掌握)

2. 容器类(掌握)

2.1 顺序容器QList

2.2 关联容器QMap

3. 几种Qt数据类型(熟悉)

3.1 跨平台数据类型

3.2 QVariant 统一数据类型

3.3 QStringList 字符串列表

4. QDateTime 日期时间类(掌握)

4.1 时间戳

4.2 生成随机数

4.3 格式化

5. QTimer 定时器类(掌握)


常用类

               ———学习内容主要是一些开发中常用的类,这些类均不继承QWidget,没有可视化效果

1. QString 字符串类(掌握)

QString是Qt字符串类型,采用Unicode编码,支持常见各国字符,因此一个字符是一个16位的QChar,而不是之前C++/C中8位的char,因此QString处理中文没有问题,且一个汉字算作一个字符。

QString支持C++中std::string常用的API,在此基础上又新增了Qt风格的API。

QString的API非常多,以下是常用API的相关词汇,需要做到英译汉的水平。

举几个函数讲解:

// 数字 → QString
// 参数1:原数字
// 参数2:进制
// 返回值:转换后的QString
QString QString::​number(int n, int base = 10)        [static]
// 数字 → QString
// 参数1:原数字
// 参数2:进制
// 返回值:转换后的QString,支持链式调用
QString &	setNum(int n, int base = 10)
// QString → 数字
// 参数1:转换是否成功
// 参数2:进制
// 返回值:转换之后的数字,如果失败返回0
int	 toInt(bool * ok = 0, int base = 10) const

main.cpp

#include "dialog.h"
#include <QApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString str = "你好こんにちは";
    qDebug() << str;
    qDebug() << str.size() << endl;
    // 把十进制的36转换为37进制
    int i = 36;
    QString text = QString::number(i,37);
    qDebug() << text;
    i = 255;
    // 链式调用
    qDebug() << text.setNum(i,16).append("哈哈").prepend("转换结果:");

    bool result;
    // QString → int
    text = "0";
    i = text.toInt(&result);
    qDebug() << i; // 0
    qDebug() << result; // true
    text = "56834cvgfgf";
    i = text.toInt(&result);
    qDebug() << i; // 0
    qDebug() << result; // false

    return 0;
}

2. 容器类(掌握)

2.1 顺序容器QList

Qt 的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。这些容器类是隐式共享和可重入的,而且它们进行了速度和存储优化,因此可以减少可执行文件的大小。此外,它们还是线程安全的,也就是说它们作为只读容器时可被多个线程访问。

QList 是最常用的容器类,虽然它是以数组列表的形式实现的,但是在其前或后添加数据非常快,QList以下标索引的方式对数据项进行访问。

本节使用QList存储一个自定义C++类型的元素,以下是在Qt项目中创建一个C++类的操作步骤:

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

2. 在弹出的窗口中,按照下图所示进行操作。

3. 在弹出的窗口中定义类。

4. 在项目管理界面,直接点击完成。可以在项目看到新创建类的头文件和源文件。

5. 在使用时,只需要引入自定义类的头文件即可。

Qt新增Java风格的迭代器,与STL迭代器的对应关系如下:

通过网盘分享的文件:Day3_24072_QString.zip

链接: https://pan.baidu.com/s/1QhYSm9MDrAqrHxxRI9IJAA

提取码: pbez

2.2 关联容器QMap

同样QMap学习方式与QList几乎相同,也存在两种风格迭代器的对应关系。

main.cpp

#include <QDebug>
#include <QMap>

int main()
{
    QMap<QString,QString> ma;  // 创建对象
    // 添加数据
    ma["姓名"] = "张三";
    ma["姓名"] = "李四"; // 因为键已经存在,因此变为修改
    qDebug() << ma;
    ma.insert("职业","销售");
    ma.insert("职业","码农"); // 因为键已经存在,因此变为修改
    qDebug() << ma;
    // 判断键有没有
    if(ma.contains("姓名"))
    {
        qDebug() << "有这个键";
    }else
        qDebug() << "没这个键";
    // 取出对应的值
    // 参数1:键
    // 参数2:默认值
    qDebug() << ma.value("职业","待业");
    qDebug() << ma.value("学历","小学");
    // 删除键值对
    int result = ma.remove("职业2");
    if(result)
    {
        qDebug() << "删除成功!";
    }else
    {
        qDebug() << "删除失败!";
    }

    // STL 遍历
    for(QMap<QString,QString>::iterator iter = ma.begin();
        iter != ma.end();iter++)
    {
        // 通过迭代器取出键和值
        qDebug() << iter.key() << iter.value();
    }

    // Java 遍历
    QMutableMapIterator<QString,QString> iter(ma);
    while(iter.hasNext())
    {
        iter.next(); // 向后移动
        qDebug() << iter.key() << iter.value(); // 取出
    }

    return 0;
}

3. 几种Qt数据类型(熟悉)

后续一些API中可能出现以下几种数据类型。

3.1 跨平台数据类型

为了确保在各个平台上各数据类型都有统一确定的长度,Qt 为各种常见数据类型定义了类型符号。

3.2 QVariant 统一数据类型

QVariant可以把Qt中常见的数据类型统一化,即常见数据类型可以转换为QVarient对象(构造函数),QVariant对象也可以转换为常见数据类型。

#include <QDebug>

int main()
{
    // 甚至可以借助QVariant进行数据转换
    int a = 12;
    QVariant v(a);
    QString text = v.toString();
    qDebug() << text;

    QVariant v2(text);
    QStringList lis = v2.toStringList();
    qDebug() << lis;

    return 0;
}

3.3 QStringList 字符串列表

可等同于QList<QString>,会在部分API中出现。

4. QDateTime 日期时间类(掌握)

QDateTime类可以同时处理日期和时间,是QDate类(日期类)与QTime(时间类)类的合并。

4.1 时间戳

可以使用下面的函数获取时间戳。

// 返回一个从1970-01-01 00:00:00到现在的毫秒数(格林威治时间)
qint64 QDateTime::​currentMSecsSinceEpoch()        [static]

可以在一段代码的前后分别调用此函数作差,简单估算代码运行时长。

4.2 生成随机数

可以使用上面的函数作为随机数种子,生成随机数。

需要注意随机数种子不能重复的问题,即不要使用同一个时间戳连续生成随机数。

4.3 格式化

格式化可以把日期和时间生成为制定格式的字符串,相关函数如下:

// 获得一个包含当前时区日期时间数据的QDateTime对象,数据来源于本地系统时钟
QDateTime QDateTime::​currentDateTime()            [static]
//  按照制定格式提取QDateTime内部的数据
// 参数:格式,见下表或自行查阅文档
// 返回值:符合格式的字符串
QString QDateTime::​toString(const QString & format) const

通过网盘分享的文件:Day4_24072_QDateTime.zip

链接: https://pan.baidu.com/s/1-LLVvM_ygJPbT2yndwQXAQ

提取码: w1nn

5. QTimer 定时器类(掌握)

QTimer类可以执行一个延时的任务或周期性任务。

常用属性如下:

  • active : const bool

        定时器是否在运行,通过getter获取当前的运行状态。

  • interval : int

        如果是一次性定时器,此属性表示延迟时间;如果是周期性定时器,此属性表示间隔时间,单位毫秒。

  • singleShot : bool

        是否是一次性

相关函数如下:

// 构造函数
QTimer::​QTimer(QObject * parent = 0)
// 启动定时器,如果定时器已经运行,此函数会停止定时器运行并重新运行
void QTimer::​start()                    [slot]
// 停止定时器
void QTimer::​stop()                    [slot]
// 定时器触发时发射的信号
void QTimer::​timeout()                [signal]

通过网盘分享的文件:Day4_24072_QTimer.zip

链接: https://pan.baidu.com/s/17nGMC3fWBqn4uYWYTM_8HA

提取码: aj4a

标签:常用,定时器,Qt,int,数据类型,day05,QString,QDateTime
From: https://blog.csdn.net/QR70892/article/details/143091774

相关文章

  • 常用SQL
    多表查询--多表查询-数据准备usemydb3;--创建部门表createtableifnotexistsdept3( deptnovarchar(20)primarykey, --部门号 namevarchar(20)--部门名字);--创建员工表createtableifnotexistsemp3( eidvarchar(20)pr......
  • docker常用命令
    Docker是一个功能强大的容器化平台,提供了许多命令来管理容器、镜像、网络等方面的操作。以下是一些常用的Docker命令:1.**容器生命周期管理**:  -`dockerrun`:创建并启动一个新的容器。  -`dockerstart`:启动一个或多个已经被停止的容器。  -`dockerstop`:......
  • 乘风破浪,扬帆出海,机器人领域常用数学之距离计算
    欧几里得距离欧几里得距离公式(EuclideanDistanceFormula)是一种用来计算两个点之间直线距离的数学公式。它基于欧几里得几何学,即经典的平面和空间几何学。欧几里得距离是两点之间最短的路径,它是在各维度上的差值的平方和的平方根。这是我们通常在日常生活中所理解的“直线距......
  • QT项目打包成exe文件-非常详细(侧重于解决输出的exe文件没有原项目功能的问题)
    写在前面: 我是研二学生,用qt给老师项目做的一个辅助软件。项目要验收,所以需要打包qt项目成exe文件,但是我死活弄不出来,来回搞了两三天才弄好。特此写下第一篇博客,记录这个过程,并给同样困扰的新手朋友们提供一个方法。我是一个新手,期待大家的批评指正。打包流程: 1、获取初始......
  • Qt中使用DXGI截取桌面图像
    文章目录一、概要二、DXGI图像截取的实现步骤三、DXGI常用接口介绍1.D3D11CreateDevice接口参数说明D3D_DRIVER_TYPE常见类型D3D11CreateDevice函数的使用示例2.QueryInterface接口参数说明3.GetAdapter4.EnumOutputs5.DuplicateOutput代......
  • VTK9.3.1在Windows10+VS2022+Qt 5.14.2环境下编译安装以及VTK应用于QT
    文章目录概要搭建编译环境编译源代码VisualStudio2022+Qt使用VTK概要本文主要介绍VTK9.3.1如何在Windows10上使用VS2022和QT进行编译安装。搭建编译环境先从VTK官网下载VTK9.3.1的源码,VTK下载地址我们可以按照官方推荐的编译方式进行编译,首先设置三个文件夹......
  • Python算法题常用函数记忆清单
    系统设计题&模拟题链接:https://leetcode.cn/problem-list/design/字符串操作splite按指定分隔符转成liststr_list=text.split() #默认按空格分割(函数写在后面,用.来调用)str_list=text.split(",") #按逗号分割 strip()去除两边的空格trimmed_text=text......
  • 常用类
    第四章—常用类1、API概述API(ApplicationProgrammingInterface)应用程序编程接口编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人......
  • WPF中Grid、StackPanel、Canvas、WrapPanel常用属性
    Grid常用属性Grid控件在WPF中非常强大,它提供了多种属性来定义行和列的布局。以下是一些常用的Grid属性:RowDefinitions和ColumnDefinitions:Grid 控件使用 RowDefinitions 和 ColumnDefinitions 来定义行和列的集合。每个 RowDefinition 和 ColumnDefinition......
  • 常用类:包装类,System类,Random类,Arrays
    包装类--integer相关包装inti1=Integer.parseInt("100");//String->intSystem.out.println(i1);Integeri2=Integer.valueOf("100");//String->IntegerSystem.out.println(i2);Integeri3=In......