首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT_VERSION不正确?

QT_VERSION不正确?
EN

Stack Overflow用户
提问于 2018-09-10 10:54:26
回答 2查看 1.1K关注 0票数 2

我正在开发一个QT_VERSION应用程序(QT5.11.1),并试图使用一个库来检查使用来自QT_VERSION的QtGlobal的Qt版本。

由于函数不可用而导致编译错误,这似乎是因为报告的Qt版本不正确(库查找#if QT_VERSION >= 0x050000 ...)。

添加以下跟踪语句;

代码语言:javascript
复制
qDebug() << "QT VERSION: " << QT_VERSION;
qDebug() << "QT STRING: " << QT_VERSION_STR;

给出输出:

代码语言:javascript
复制
... (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不太熟悉,也不知道从这里往哪里走,所以我会非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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")的字符串。这是编译应用程序的版本。

票数 5
EN

Stack Overflow用户

发布于 2018-09-10 11:43:25

通过一些修改,QT_VERSION可以被划分为大/小/微的数字。

testQT_VERSION.cc

代码语言:javascript
复制
#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

代码语言:javascript
复制
SOURCES = testQT_VERSION.cc

QT = core

cygwin64上编译和测试

代码语言:javascript
复制
$ 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")。此版本可能与应用程序所针对的版本不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52256264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档