QT系列之软件使用技巧

目录

1.注释快捷键

2.快速添加所用函数的头文件的快捷键

3.解决中文显示乱码

4.pro中路径带有空格

5.程序直接关闭退出

6.颜色数组

7.格式化代码

8.解决编码问题

9.QString字符串中添加数字

10.界面有大量数据需要初始化

11.获取应用程序的路径

12.注释方式

13.关掉有道词典

14.字符串格式转换问题

15.程序运行的调试窗口(黑色框)

16.标题栏样式设置

17.开源项目

18.给软件添加详细信息,解决中文乱码问题

19 QImage的像素化

20 获取硬盘容量

21 限制输入框只能输入IP地址


1.常用快捷键

参考详细的博客:Qtcreator中常用快捷键总结_Dasis的博客-CSDN博客_qtcreator复制整行快捷键

1.1 快速注释代码

      ctrl+/       可以快速注释以及解除注释

1.2 快速添加所用函数的头文件的快捷键

     Alt+Enter   如下图所示,vector没有加头文件,可以通过快捷键快速加上

1.3 跳转到变量、函数等的定义处

        F2

1.4 跳转到上一处

        Alt+左箭头;或者 Alt+右箭头

3.解决中文显示乱码

最好的方法:在main.cpp函数加入如下代码:

#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VER
    QTextCodec *codec = QTextCodec::codecForName("gbk");
#else
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
#endif
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
#else
    QTextCodec *codec = QTextCodec::codecForName("utf-8");
    QTextCodec::setCodecForLocale(codec);
#endif

其次,如果版本较高,可以用如下方法。

方法之一是,在乱码的cpp文件最前面加如下代码

#pragma execution_character_set("utf-8")

4.pro中路径带有空格

#Kinect路径
LIBS += -L$$quote(C:/Program Files/Microsoft SDKs/Kinect/v2.0_1409/Lib/x64/Kinect20.lib)
INCLUDEPATH += $$quote(C:/Program Files/Microsoft SDKs/Kinect/v2.0_1409/inc)

5.程序直接关闭退出

HANDLE hself = GetCurrentProcess();
TerminateProcess(hself, 0);

6.颜色数组

//定义颜色数组
QColor mycolor[55]={
    0xFF0000,0xFFFF00,0x00FF00,0x0000FF,0xFF00FF,//红色,黄色,绿色,蓝色,紫色
    0x800000,0xDC143C,0xC71585,0xA52A2A,0xF5FFFA,//maroon,crimson,mediumvioletred,brown,mintcream
    0xD87093,0xFF1493,0xFF69B4,0xFFC0CB,0xFFE4E1,//palevioletred,deeppink,hotpink,pink,mistyrose
    0x4B0082,0x800080,0x9932CC,0x8A2BE2,0x9400D3,//indigo,purple,darkorchid,blueviolet,darkviolet
    0x6A5ACD,0x9370DB,0x7B68EE,0xBA55D3,0xEE82EE,//slateblue,mediumpurple,mediumslateblue,mediumorchid,violet
    0xD8BFD8,0xE6E6FA,0x8B4513,0xD2691E,0xCD5C5C,//thistle,lavender,saddlebrown,chocolate,indianred
    0xBC8F8F,0xFA8072,0xFFA07A,0xFF4500,0xFF8C00,//rosybrown,salmon,lightsalmon,orangered,darkorange
    0xCD853F,0xFFE4B5,0x2F4F4F,0x556B2F,0x808000,//peru,moccasin,darklategray,darkolivegreen,olive
    0x006400,0x228B22,0x008080,0x20B2AA,0x66CDAA,//darkgreen,forestgreen,green,lightseagreen,madiumaquamarine
    0x9ACD32,0x00FF7F,0x7FFFD4,0x191970,0x483D8B,//yellowgreen,springgreen,aquamarine,midnightblue,darkslateblue
    0x008B8B,0x00FFFF,0x778899,0x000001,0xF8F8FF,//darkcyan,aqua,lightslategray,black,ghostwhite
    };


//使用颜色数组
ui->widget->graph(2)->setPen((mycolor[1]));

颜色的效果如链接所示:Qt css颜色对照表

7.格式化代码

ctrl+I 格式化选中代码

8.解决编码问题

一般在Window开发环境里,是GBK编码,在Linux开发环境里,是utf-8编码。

在Window开发环境里,比较通用的写法是: 在main.cpp文件中加入: 

QTextCodec *gbk = QTextCodec::codecForName("gb18030"); 
QTextCodec::setCodecForTr(gbk);
QTextCodec::setCodecForLocale(gbk);
QTextCodec::setCodecForCStrings(gbk);

第一行:定义gb18030编码格式;

第二行: 这个函数的作用是设置传给tr函数时的默认字符串编码,GUI设计中最常用的一种。

第三行:这个函数主要用于设置和对本地文件系统读写时候的默认编码格式。比如通过流读取一个文件内容时的编码格式。或者通过qDebug()输出打印信息时的编码。

第四行:这个函数主要是用在字符常量或者QByteArray构造QString对象时使用的一种编码方式。

9.QString字符串中添加数字

QString("DOCK窗口%1").arg(tIndex++)

10.界面有大量数据需要初始化

定义数据结构,然后循环取值进行初始化。

11.获取应用程序的路径

QString curPath=QCoreApplication::applicationDirPath(); //获取应用程序的路径

12.注释方式

//函数名:on_Write2ExcelButton_clicked
//函数功能:页面中写入EXCEL按钮按下的 槽函数
//输入参数:无
//输出参数:无
//函数返回值:无

13.关掉有道词典

我的软件版本如下图,如果我同时开启了有道词典,老是出现qt creator崩溃。具体原因不知,可能是:有道词典在进行取词翻译时,调用了windows中的事件 WM_GETOBJECT。而QT处理该事件是会导致内存泄漏所以崩溃。

参考博客:QT 5.12和有道词典冲突_aoxuestudy的专栏-CSDN博客

14.字符串格式转换问题

QString转char*

QString 转换为 char * - 冷月枫寂 - 博客园

15.程序运行的调试窗口(黑色框)

在pro文件中,添加如下语句实现运行时打印调试信息。

CONFIG += console#显示控制台提示窗口,以方便调试

如果不需要这个打印信息了,将上一句改为如下语句。

CONFIG += debug

16.标题栏样式设置

参考链接:setWindowFlags

17.开源项目

Qt编写的开源帖子集合(懒人专用) - 飞扬青云 - 博客园

18.给软件添加详细信息,解决中文乱码问题

在pro文件中,添加如下代码,即可给软件添加详细信息。

 在软件的属性栏,详细信息中即可看到版本信息,以及其他信息。

 如果乱码,需要修改pro文件的编码方式为:GB18030

首先,打开编码方式显示。

然后,在pro文件中,选择编码方式为GB18030

19 QImage的像素化

//获取像素值RGB
QColor oldColor = QColor(mImg.pixel(j,i));

//定义灰度图
QImage *gray_image=new QImage(nFFTCol,nFFTRow,QImage::Format_Grayscale8);//先宽度,后高度

//转换为灰度值
quint8 tempvalue=(oldColor.red()*30+oldColor.green()*59+oldColor.blue()*11)/100;//转换为灰度值

//设置灰度图的像素值,RGB值都设为一致,则是灰度值
gray_image->setPixel(j,i,qRgb(tempvalue,tempvalue,tempvalue));

20 获取硬盘容量

 QList<QStorageInfo> storageInfoList = QStorageInfo::mountedVolumes();

    foreach(QStorageInfo storage ,storageInfoList){
        qDebug() << "盘符" <<storage.rootPath();
        if (storage.isReadOnly())
            qDebug() << "是否只读:" << storage.isReadOnly();
        qDebug() << "硬盘系统类型:" << storage.fileSystemType();
        qDebug() << "总容量:" << storage.bytesTotal()/1000/1000 << "MB";
        qDebug() << "可用容量:" << storage.bytesAvailable()/1000/1000 << "MB";
    }

21 限制输入框只能输入IP地址

//*********************文本框输入限制 start*********************
    QRegExp regExpIP("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])[\\.]){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])");
    QRegExp regExpNetPort("((6553[0-5])|[655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{3}|[1-9][0-9]{2}|[1-9][0-9]|[0-9])");
    //限定只能输入IP地址
    ui->IP_Server1->setValidator(new QRegExpValidator(regExpIP,this));
    ui->IP_Server2->setValidator(new QRegExpValidator(regExpIP,this));
    ui->IP_Server3->setValidator(new QRegExpValidator(regExpIP,this));
    //限定只能输入端口号
    ui->Port_Server1->setValidator(new QRegExpValidator(regExpNetPort,this));
    ui->Port_Server2->setValidator(new QRegExpValidator(regExpNetPort,this));
    ui->Port_Server3->setValidator(new QRegExpValidator(regExpNetPort,this));
    //*********************文本框输入限制 stop*********************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kissgoodbye2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值