QT_VERSION不正确?

问题描述 投票:0回答:2

我正在开发一个Qt Android应用程序(Qt 5.11.1),并尝试使用一个库,该库使用QtGlobal的QT_VERSION来检查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

该字符串似乎正确但版本号看起来不正确。

我正在安装Qt Creator 4.7的Windows 7机器以及通过维护工具安装的Qt 5.11.1和5.10.1。构建设置只是Android的默认设置。

我对Qt并不太熟悉,也不确定从哪里去,所以任何帮助都会非常感激。

c++ qt configuration
2个回答
3
投票

根据Qt文件:

QT_VERSION

此宏扩展了指定Qt版本号的形式0xMMNNPP(MM = major,NN = minor,PP = patch)的数值。例如,如果您针对Qt 4.1.2编译应用程序,则QT_VERSION宏将扩展为0x040102。

意味着它必须转换为十六进制数字,然后它将显示Qt版本号。您返回的号码是330497,因此将其带到十六进制将为0X50B01。由于B在十进制中是11,因此版本是5.11.1。

QT_VERSION_STR

此宏扩展为指定Qt版本号的字符串(例如,“4.1.2”)。这是编译应用程序的版本。


0
投票

有点摆弄,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”)。这可能是与编译应用程序的版本不同的版本。

© www.soinside.com 2019 - 2024. All rights reserved.