我正在开发一个QT_VERSION应用程序(QT5.11.1),并试图使用一个库来检查使用来自QT_VERSION的QtGlobal的Qt版本。
由于函数不可用而导致编译错误,这似乎是因为报告的Qt版本不正确(库查找#if QT_VERSION >= 0x050000 ...)。
添加以下跟踪语句;
qDebug() << "QT VERSION: " << QT_VERSION;
qDebug() << "QT STRING: " << QT_VERSION_STR;给出输出:
... (int main(int, char**)): QT VERSION: 330497
... (int main(int, char**)): QT STRING: 5.11.1字符串看起来是正确的,但是版本号看上去不对。
我正在开发一台Windows 7机器,通过维护工具安装了QtCreator4.7以及QT5.11.1和5.10.1。构建设置只是Android的默认设置。
我对Qt不太熟悉,也不知道从这里往哪里走,所以我会非常感谢您的帮助。
发布于 2018-09-10 11:08:27
根据Qt文件:
QT_VERSION 这个宏扩展了指定Qt版本号的0xMMNNPP表单(MM =,NN =未成年人,PP =修补程序)的数值。例如,如果您根据QT4.1.2编译应用程序,QT_VERSION宏将展开为0x040102。
这意味着它必须转换为一个十六进制数字,然后它将显示Qt版本号。您返回的号码是330497,所以将它带到十六进制将是0X50B01。由于B为11 (十进制),版本为5.11.1。
QT_VERSION_STR 此宏扩展为指定Qt版本号(例如"4.1.2")的字符串。这是编译应用程序的版本。
发布于 2018-09-10 11:43:25
通过一些修改,QT_VERSION可以被划分为大/小/微的数字。
testQT_VERSION.cc
#include <QtCore>
int main()
{
qDebug() << "QT_VERSION_STR:" << QT_VERSION_STR;
qDebug() << "QT_VERSION:"
<< (((QT_VERSION) >> 16) & 0xff)
<< (((QT_VERSION) >> 8) & 0xff)
<< ((QT_VERSION) & 0xff);
return 0;
}testQT_VERSION.pro
SOURCES = testQT_VERSION.cc
QT = core在cygwin64上编译和测试
$ qmake-qt5 testQT_VERSION.pro
$ make
$ ./testQT_VERSION
QT_VERSION_STR: 5.9.4
QT_VERSION: 5 9 4
$此外,值得注意的是:
const char* qVersion()
以字符串的形式返回运行时Qt的版本号(例如,"4.1.2")。此版本可能与应用程序所针对的版本不同。
https://stackoverflow.com/questions/52256264
复制相似问题