Qt中的动态链接库编程(Q_DECL_IMPORT、Q_DECL_EXPORT)_FDWMin的博客-CSDN博客_q_decl_export
Bil.lib供Plugin项目和Test 项目引用,
Bil.dll将给Test.exe运行时动态加载。
Qt中pri文件介绍及使用
Qt基础学习(一)——.pro文件_simonXi-tech的博客-CSDN博客_.pro文件
——介绍
我们可以把 *.pro 文件内的一部分内容单独放到一个 *.pri 文件内,然后包含进来。使用的时候采用include引用即可。
DESTDIR:放置可执行程序目标的目录,比如:DESTDIR = /opt
。
DEFINES:应用程序所需的额外的包含的预处理程序定义的列表。
DEFINES += USE_MY_STUFF
然后可以在代码中使用:
#ifdef USE_MY_STUFF
// TODO
#else
// TODO
#endif
也就是通过指定USE_MY_STUFF
这个宏就可以选择使用不同的动态链接库的版本。
.pro文件
Qt基础学习(一)——.pro文件_simonXi-tech的博客-CSDN博客_.pro文件
MOC_DIR:指定来自moc
的所有中间文件放置的目录
OBJECTS_DIR:指定所有中间文件.o(.obj)
放置的目录
RESOURCES:指定资源文件(qrc
)的名称,例如,RESOURCES += \
mouse.qrc
CONFIG(debug,debug|release)
Qt编译debug和release版本--CONFIG(debug,debug|release)_风斜夜的博客-CSDN博客_qt编译debug
在pro文件里添加:
INCLUDEPATH += depend/opencv
INCLUDEPATH += depend/opencv2
debug {
LIBS += -lopencv_core2413d
}
release {
LIBS += -lopencv_highgui241
}
如果打开看项目生成的makefile文件,会发现Makefile.Debug和Makefile.Release都把opencv_core2413d和opencv_highgui241包含进来了。
因为CONFIG可以同时定义 debug 和 release,但只有一个处于active(当两个互斥的值出现时,最后设置的处于active状态),也就是虽然代码里最后是只有一个处于active,但release和debug都对上面的代码进行了处理。
debug 和 release 都能通过上面的测试时
解决方法:
CONFIG(debug,debug|release){
LIBS += -lopencv_core2413d
}
else{
LIBS += -lopencv_highgui241
对于 CONFIG(debug,debug|release) : 两个参数,
前者是要判断的active的选项,
后者是互斥的选项的一个集合
//表示在 debug和release中选择,
若debug为active则生效,处理该选择下的代码 LIBS += -lopencv_core2413d ;
esle 则是release状态,执行其下的代码LIBS += -lopencv_highgui241
.pro关键字
QT Pro关键字 整理_zy_heu的博客-CSDN博客_qt关键字
Qt 之 pro 配置详解_一去丶二三里的博客-CSDN博客_dependpath
TEMPLATE:
项目模板,一般在创建时QtCreator会自动帮你写入对应的参数
app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
lib - 建立一个库的makefile。
vcapp - 建立一个应用程序的Visual Studio项目文件。
vclib - 建立一个库的Visual Studio项目文件。
subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成 makefile并且为它调用make的makefile。
创建一个用于构建目标子目录的Makefile,子目录使用SUBDIRS变量指定。
“app”模板
“app”模板告诉qmake为建立一个应用程序生成一个makefile。当使用这个模板时,下面这些qmake系统变量是被承认的。你应该在你的.pro文件中使用它们来为你的应用程序指定特定信息。
win32 { DLLDESTDIR = $$BUILD_DIR/../../../HmiRunTimeBin }
表示作用域
$$PWD
的意思为当前目录
如pro文件中:INCLUDEPATH += $$PWD/lib/x64-win64
$$PWD
表示的意思就是pro文件所在的目录。
foreach
Qt中foreach及QList的使用
Qt中foreach及QList的使用_做了不一定能实现但不做一定不会实现的博客-CSDN博客_qt遍历qlist
QList是一个最常用的容器类,用它定义一个对象通常是
QList <int>list;
其中int代表给定的类型,也就是说现在定义了一个有符号整形的容器,r然后给里面装值
list<<2<<3<<4<<6;
现在就可以使用foreach(int i,list)这样就可以遍历整个容器了
QList <int>list;
list <<2<<4<<1<<6;
foreach(int str,list)
qDebug()<<str<<endl;
C++中的foreach用法
C++中的foreach用法_leyou2018的博客-CSDN博客_c++ foreach用法
Qt foreach关键字用法(无师自通) (biancheng.net)
QStringList listTemp;
listTemp.append("aaa");
listTemp.append("bbb");
listTemp.append("ccc");
QString strTemp1;
QString strTemp2;
foreach(strTemp1,listTemp)
{
strTemp2= strTemp1;
}
以上代码中,listTemp会把自己的每个项,依次赋值给strTemp1。本例中,strTemp共有三项,foreach会循环三次,strTemp1在这三次循环中,依次被赋值“aaa”,“bbb”,“ccc”。
总结:foreach用来遍历list,可以在遍历中基于 list 的相应项做相应操作。
QStringList用法
QString 截取分割字符串 - 紫枫术河 - 博客园 (cnblogs.com)
使用 split() 函数对上述两个问题中的第二个进行求解:
1 2 3 |
|
QString str = "a#b#c";
QStringList list =str.split("#");//查找#符号,然后分离存入list。list: [ "a", "b", "c" ];
QStringList flieName=list.at(0),//就是取刚才存入的队列的字符,list.at(0)就是a。- -!
mid()函数
当position的下标值超出字符串长度时,返回null;
当从position开始的子串长度不够n或n为-1(缺省时的默认值也为-1),函数返回从position开始到结尾的子串。
QString x = "Nine pineapples";
QString y = x.mid(5, 4); // y == "pine"
QString z = x.mid(5); // z == "pineapples"