Qt基本知识点(自整理)

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lee_xuwei/article/details/85283361

(1)类定义中的【Q_OBJECT

如果一个类要使用信号/槽功能,就必须在其中声明Q_OBJECT

(2)explicit        C++ explicit关键字详解

在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显式的方式进行类型转换。

explicit使用注意事项: explicit 关键字只能用于类内部的构造函数声明上。 explicit 关键字作用于单个参数的构造函数。

(3)Qt构造函数的参数:QObject *parent = 0    Qt构造函数的参数:QObject *parent = Q_NULLPTR

(4)友元函数和友元类详解       友元函数和友元类详解

(5)Qt之信号signals和槽slots详解      Qt之信号signals和槽slots详解

(6)release下屏蔽qDebug()语句的输出:pro文件中添加

release:DEFINES += QT_NO_WARNING_OUTPUT\
                   QT_NO_DEBUG_OUTPUT

添加完成后,必须clear项目然后重新编译

(7)coutcin的使用(信息打印到【应用程序输出窗口】):增加  #include <iostream>;再通过std::cout<<   与  std::cin<<  就可以了。

(8)SQLitesqlite_master表     摘录于SQLite的sqlite_master表​​​​​​

       sqlite_master表是SQLite的系统表。该表记录该数据库中保存的表、索引、视图、和触发器信息。每一行记录一个项目。在创建一个SQLIte数据库的时候,该表会自动创建。sqlite_master表包含5列。

       type列记录了项目的类型,如table、index、view、trigger。
       name列记录了项目的名称,如表名、索引名等。
       tbl_name列记录所从属的表名,如索引所在的表名。对于表来说,该列就是表名本身。
       rootpage列记录项目在数据库页中存储的编号。对于视图和触发器,该列值为0或者NULL。
       sql列记录创建该项目的SQL语句。

       由于sqlite_master表存储所有的数据库项目,所以可以通过该表判断特定的表、视图或者索引是否存在。例如,以下语句可以判断user表是否存在:select count(*) from sqlite_master where name='user' and type='table'   
(9)C++ 允许多继承,即一个子类可以有多个父类,它继承了多个父类的特性。

         C# 一个类只允许有一个父类,但它可以同时实现若干个接口。
(10)C++中的.hpp文件    c++中的.hpp文件

         hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。

         而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,

         采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库

         特点:

         1)、是Header Plus Plus 的简写。

         2)、与*.h类似hpp是C++程序头文件

         3)、是VCL 专用的头文件,已预编译。

         4)、是一般模板类的头文件。

         5)、一般来说,*.h里面只有声明,没有实现而*.hpp里声明实现都有,后者可以减 少.cpp的数量

         6)、*.h里面可以有using namespace std,而*.hpp里则无。

(11)C++ 序列容器

模板 头文件 说明 特点
vector<T> vector 创建一个表示存储T类型对象的动态数组的类 在末尾插入和删除;随机访问内容
list<T> list 创建一个表示存储T类型对象的链表的类 在任意位置插入,删除任意对象;不能进行随机访问,只能按顺序访问。
deque<T> deque 创建一个表示存储T类型对象的双端队列的类 在末尾或开头插入和删除;随机访问内容

关联容器    深度解析QMap与QHash

(12)QT中foreach的使用   QT中foreach的使用 

(13)打印char类型数组

#include <iostream>

// 打印 test_char 正确的方式
char test_char[2] = {0x01, 0x02};
std::cout<<"send data:"<<QByteArray::fromRawData(test_char, 2).toHex(',').data()<<std::endl; // 打印的结果:send data:01,02

// 错误的方式(打印出的是字符的ascii码,还得在【test_char】结尾处增加字符串结尾0x00)
std::cout<<test_char<<std::endl;

(14) #pragma once 与#ifndef的区别  #pragma once与 #ifndef的区别

目的:避免同一个文件被include多次

(15)

猜你喜欢

转载自blog.csdn.net/lee_xuwei/article/details/85283361
今日推荐