标签Qt

Qt常用

快捷键配置方法:

进入“偏好设置 ->环境->键盘”即可配置快捷键。

编号 快捷键 功能
1 Esc 切换到代码编辑状态
2 F1 查看帮助(选中某一类或函数,按下F1,出现帮助文档)
3 F2 在光标选中对象的声明和定义之间切换(和Ctrl+鼠标左键一样的效果,选中某一类或函数,按下F2,迅速定位到该类或函数声明的地方或被调用的地方)
4 F3 查找下一个
5 F4 头文件和源文件之间切换
6 F5 开始调试/继续执行
7 F9 设置和取消断点
8 F10 单步跳过
9 F11 单步进入
10 Shift + F2 声明和定义之间切换
11 Shift + F3 查找上一个
12 Shift + F5 停止调试
13 Shift + F11 单步跳出
14 Ctrl + 0 编辑界面恢复默认字体
15 Ctrl + 1 激活欢迎模式
16 Ctrl + 2 激活编辑模式
17 Ctrl + 3 激活调试模式
18 Ctrl + 4 激活项目模式
19 Ctrl + 5 激活帮助模式
20 Ctrl + 6 激活输出模式
21 Ctrl + B 编译工程
22 Ctrl + E释放后按0 删除新建的分栏
23 Ctrl + E释放后按1 删除所有分栏
24 Ctrl + E释放后按2 上下分栏
25 Ctrl + E释放后按3 左右分栏
26 Ctrl + F 查找/替换当前选中的内容,对与所选内容一致的部分进行高亮显示
27 Ctrl + I 代码格式化
28 Ctrl + K 定位文件,可以找到对应的文件(符号说明:? 帮助、: 类和方法、1 数字 定位当前文件中行、m 类、 f 方法、a 任何工程中、p 当前工程中)
29 Ctrl + L 跳到某一行
30 Ctrl + M 添加/删除书签(书签也可以添加文字标注)
31 Ctrl + W 关闭当前编辑的文件
32 Ctrl + R 运行工程
33 Ctrl + . 下一个书签
34 Ctrl + , 上一个书签
35 Ctrl + / 多行注释/取消多行注释
36 Ctrl + [ 跳到代码块的头部
37 Ctrl + ] 跳到代码块的尾部
38 Ctrl + Tab 快速切换已打开的文件
39 Ctrl + Space 自动补全(Windows系统下与输入法切换快捷键冲突)
40 Ctrl + 转动鼠标滚轮 调整编辑区字体大小
41 Ctrl + Shift + F5 重启调试
42 Ctrl + Shift + F 在项目/文件夹下查找
43 Ctrl + Shift + R 局部变量统一修改(将光标移动到需要更改的变量上,按Ctrl+Shift+ R,当前变量名称外框为红色时,表示已经已激活全局修改功能,当修改此处变量名称时将一同修改代码中所有使用该变量的变量名。),全局变量开启全局替换窗口
44 Ctrl + Shift + U 查找所有使用该符号的地方
45 Ctrl + Shift + < 折叠代码块
46 Ctrl + Shift + > 展开代码块
47 Ctrl + Shift + Up 将当前行的代码向上移动一行
48 Ctrl + Shift + Down 将当前行的代码向下移动一行
49 Alt + 0 隐藏或显示边栏,编辑模式下起作用(有时写的函数太长,屏幕不够大,就用这个)
50 Alt + 1 切换至/关闭生成窗口
51 Alt + 2 切换至/关闭搜索结果窗口
52 Alt + 3 切换至/关闭应用输出窗口
53 Alt + 4 切换至/关闭编译输出窗口
54 Alt + 5 切换至/关闭QML/JS Console窗口
55 Alt + 6 切换至/关闭概要信息窗口
56 Alt + 7 切换至/关闭版本控制窗口
57 Alt + 9 最大化/最小化输出窗口
58 Alt + 左 光标返回到上一位置
59 Alt + 右 光标前进到下一位置
60 Alt + Enter 将光标移动到h文件中的方法声明,按Alt+Enter,再按回车键将在cpp中添加对应的方法实体

格式化代码:

  1. 先全选所有代码(Ctrl + A),然后格式化所选代码(Ctrl + I)
  2. Beautifier插件+astyle
    FYI
    http://astyle.sourceforge.net/install.html
*.astylerc
style=linux             # 设置 Linux 风格
indent-switches         # 设置 switch 整体缩进
indent-namespaces       # 设置 namespace 整体缩进
indent-preproc-block    # 设置预处理模块缩进
pad-oper                # 操作符前后填充空格
delete-empty-lines      # 删除多余空行
add-braces              # 单行语句加上大括号

QT network

网络模块介绍
类名 说明 中文
QAbstractNetworkCache The interface for cache implementations 缓存实现的接口
QNetworkCacheMetaData Cache information 缓存信息
QHstsPolicy Specifies that a host supports HTTP Strict Transport Security policy (HSTS) 指定主机支持HTTP严格传输安全策略(HSTS)
QHttpMultiPart Resembles a MIME multipart message to be sent over HTTP 类似于通过HTTP发送的MIME多部分消息
QHttpPart Holds a body part to be used inside a HTTP multipart MIME message 在HTTP多部分MIME消息中保存要使用的身体部分
QNetworkAccessManager Allows the application to send network requests and receive replies 允许应用程序发送网络请求并接收回复
QNetworkCookie Holds ne network cookie 保持网络cookie
QNetworkCookieJar Implements a simple jar of QNetworkCookie objects 实现一个简单的QNetworkCookie对象
QNetworkDiskCache Very basic disk cache 非常基本的磁盘缓存
QNetworkReply Contains the data and headers for a request sent with QNetworkAccessManager 包含使用QNetworkAccessManager发送的请求的数据和标题
QNetworkRequest Holds a request to be sent with QNetworkAccessManager 持有使用QNetworkAccessManager发送的请求
QNetworkConfigurationManager Manages the network configurations provided by the system 管理系统提供的网络配置
QNetworkConfiguration Abstraction of one or more access point configurations 抽象一个或多个接入点配置
QNetworkSession Control over the system’s access points and enables session management for cases when multiple clients access the same access point 控制系统的接入点,并为多个客户端访问同一接入点的情况启用会话管理
QAuthenticator Authentication object 认证对象
QDnsDomainNameRecord Stores information about a domain name record 存储有关域名记录的信息
QDnsHostAddressRecord Stores information about a host address record 存储有关主机地址记录的信息
QDnsLookup Represents a DNS lookup 表示DNS查找
QDnsMailExchangeRecord Stores information about a DNS MX record 存储有关DNS MX记录的信息
QDnsServiceRecord Stores information about a DNS SRV record 存储有关DNS SRV记录的信息
QDnsTextRecord Stores information about a DNS TXT record 存储有关DNS TXT记录的信息
QHostAddress IP address IP地址
QHostInfo Static functions for host name lookups 用于主机名查找的静态函数
QNetworkDatagram The data and metadata of a UDP datagram UDP数据报的数据和元数据
QNetworkAddressEntry Stores one IP address supported by a network interface, along with its associated netmask and broadcast address 存储网络接口支持的一个IP地址及其关联的网络掩码和广播地址
QNetworkInterface Listing of the host’s IP addresses and network interfaces 列出主机的IP地址和网络接口
QNetworkProxy Network layer proxy 网络层代理
QNetworkProxyFactory Fine-grained proxy selection 细粒度代理选择
QNetworkProxyQuery Used to query the proxy settings for a socket 用于查询套接字的代理设置
QAbstractSocket The base functionality common to all socket types 所有套接字类型通用的基本功能
QLocalServer Local socket based server 本地套接字服务器
QLocalSocket Local socket 本地套接字
QSctpServer SCTP-based server 基于SCTP的服务器
QSctpSocket SCTP socket SCTP套接字
QTcpServer TCP-based server 基于TCP的服务器
QTcpSocket TCP socket TCP 套接字
QUdpSocket UDP socket UDP 套接字
QSslCertificate Convenient API for an X509 certificate 简单的X509证书API
QSslCertificateExtension API for accessing the extensions of an X509 certificate 用于访问X509证书扩展名的API
QSslCipher Represents an SSL cryptographic cipher 表示SSL加密密码
QSslConfiguration Holds the configuration and state of an SSL connection 保持SSL连接的配置和状态
QSslDiffieHellmanParameters Interface for Diffie-Hellman parameters for servers 服务器的Diffie-Hellman参数接口
QSslEllipticCurve Represents an elliptic curve for use by elliptic-curve cipher algorithms 表示椭圆曲线密码算法使用的椭圆曲线
QSslError SSL error SSL错误
QSslKey Interface for private and public keys 私钥和公钥的接口
QSslPreSharedKeyAuthenticator Authentication data for pre shared keys (PSK) ciphersuites 用于预共享密钥(PSK)密码套件的认证数据
QSslSocket SSL encrypted socket for both clients and servers 用于客户端和服务器的SSL加密套接字

Qt

#include <QDebug>
#include <QString>
#include <QTread>

QSting s1="d:\\";
s1 += "tt";
s1.append("tt");
int pos = s1.indexOf("\\");
s1 = s1.mid(pos+1,QStringLiteral("tt").length());
s1.clear();

str = QString::number(3.14);

Qstring s3="123";
qDebud("d3 value: %s")<< qPrintable(s3)<<endl;
int d3=s3.toInt();
qDebud("d3 value: %d")<< d3<<endl;

QScopedPointer<int> i(new int(3));
QScopedArrayPointer<SPA>spArr(new APS[10]);

class MyThread:public QTread{
public:
    MyThread(){ isStop =false;}
    ~MyThread(){}
    void CloseThread(){isStop = true;}
    void run(){
        while(!isStop){
            qDebud()<< tr("MyThread")<<QThread::currentThreadld();<<endl;
            sleep(10);
        }
    }
private:
    bool isStop;
}

MyThread* pT = new MyThread();
pT->start();

MyThread pT ;
pT.start();

pT.CloseThread();


QPushButton * btn = new QPushButton; //无参构造
//btn->show(); //show用顶层方式弹出
btn->setParent(this); //设置上级
bth->setText("btn"); //将char*隐式转换为QString

QPushButton * btn2 = new QPushButton("btn2",this); //有参构造,窗口按btn2大小显示
this->resize(宽,高);//重置窗口大小
btn2->move(x,y);//按钮移动
btn2->resize(50,50);//按钮大小也可以重置

setWindowTitle("w1");//重置窗口标题setWidgetTitle
setFixedSize(600,400);//设置固定窗口大小

//坐标系X-向右 Y向下

//connect(信号的发送者,发送的信号地址,信号的接收者,处理的函数(槽函数)的地址)
connect(btn,&QPushButton::clicked,this,&QWidget::colose);
//自定类继承public QObject
signals:
    //自定信号,只声明不实现
    void hungry();
public slots:
    //算定槽函数,高版本可以写到public下或全局函数,要声明要实现
    void treat();
    //触发 emit zt->hugry();

//同时也有有参 重载时,利用函数指针明确指向哪个函数的地址
void(T1:: *t1Signal)(QString) = &T1::hungry;
void(S1:: *s1Slot)(QString)=&S1::treat;
connect(t1,t1Signal,s1,s1Slot);
//断开连接
disconnect(t1,t1Signal,s1,s1Slot);
信号与槽参数必须对应,信号的参数个数可以多于槽的参数个数,反之不可以,但必须类型一一对应
connect(zt,SIGNAL(huangry(void)),st,SLOT(treat(void)));//QT4写法,不推荐,类型匹配不检测,当字符串处理,优点,参数类型直观,发生重载不用写函数指针
无参调用有参时可以使用lambda表达式实现

//QString转char* 先转QBtyeArray
QStringName.toUft8.data()

使用lambda表达式C++版本大于11
CONFIG +=  C++11
[](1)-> int {}(2)
[]值引用:空,不使用任何函数对象参数,=值传递方式&引用传递方式,this可以使用所在类的成员变量,a传值默认是const的,要修改传入a的拷贝增加mutable修饰符
(1):参数
-> int:返回值类型
{}:逻辑实现体
(2):()执行
//做信号槽连接时,默认内部变量进行锁状态只读,进行写操作会出错
connect(btn,&QPushButton::clicked,this,[&](){
    btn->setText("dd");//[&]改用[=]
});

connect(ui->actionNew,&QAction::triggered,this,[=](){
        //模态(不可以对其它窗口操作)与非模态(还可以对其它操作)对话框
//        QDialog dlg;
//        dlg.resize(200,100);
//        dlg.exec();  //模态 阻塞

        // 标准调用
        //QMessageBox::critical(this,"错误","critical");
        //QMessageBox::information(this,"信息","infomation");
        //QMessageBox::question(this,"问题","question");
        //QMessageBox::warning(this,"警告","warning");
        if (QMessageBox::Save == QMessageBox::question(this,"问题","question",QMessageBox::Save | QMessageBox::Discard,
                              QMessageBox::Discard)){
            qDebug()<<"Save";
        }else{
            qDebug()<<"Discard";
        };

    });

    connect(ui->actionOpen,&QAction::triggered,this,[=](){
        //模态(不可以对其它窗口操作)与非模态(还可以对其它操作)对话框
        // QDialog dlg2; //一闪而过,应创建在堆上
        //dlg2.resize(200,100);
        //dlg2.show();  //非模态

        QDialog * dlg2 = new QDialog(this);
        dlg2->resize(200,100);
        dlg2->show();  //非模态
        //注意当前对象没有及时释放,防止内存泄露,设置属性关闭弹窗
        dlg2->setAttribute(Qt::WA_DeleteOnClose);

//        QColor color = QColorDialog::getColor(QColor(255,0,0));
//        qDebug()<<color.red() <<color.green() << color.blue();

        QString path = QFileDialog::getOpenFileName(this,"打开文件","c:\\","(*.txt,*.jpg)");
    });

标准对话框
QColorDialog 选择颜色、
QFileDialog 文件
QFontDialog 字体
QInputDialog 允许用户输入一个值,并返回
QMessageDialog 模态对话框
QpageSetupDialog 打印机纸张相关
QPrintDialog 打印配制
QPrintPreviewDialog 打印预览
QProgressDialog 显示操作过程

//    QListWidgetItem  * item = new QListWidgetItem("锄禾日当午");

//    //设置对齐方式
//    item->setTextAlignment(Qt::AlignHCenter);
//    ui->listWidget->addItem(item);

    //QStringList ===  QList<QString>
    QStringList list;
    list << "锄禾日当午"<< "汗滴禾下土"<< "谁知盘中餐"<< "粒粒皆辛苦";
    //QStringList()<<"锄禾日当午"<< "汗滴禾下土"<< "谁知盘中餐"<< "粒粒皆辛苦" 匿名对象也可以直接使用
    ui->listWidget->addItems(list);

//定时器第二种方式
    QTimer * timer1 = new QTimer(this);
    //启动定时器对象
    timer1->start(500); //毫秒做单位
    //每隔0.5秒发送信号
    connect(timer1,&QTimer::timeout,[=](){
        static int num = 0;
        ui->label_4->setText( QString::number(num++));
    });

    //点击按钮 暂停定时器
    connect(ui->pushButton,&QPushButton::clicked,[=](){
        timer1->stop();
    });

设置图标
RC_ICONS = app.ico
MainWindow:windowsIcon 选择图标