目录
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*********************