Как узнать версию qt в linux
Перейти к содержимому

Как узнать версию qt в linux

  • автор:

Как узнать версию кутэ в коде с++?

Я вообщем пилю кроссплатформенное ПО и в линухе 5я версия последняя для дистрибутива а в винде 6я. Из-за этого приходится переписывать инклуды хидеров — там разные директории до них. Макрос __unix__ не находит почему то, _WIN32 есть(хотя можно через него). Как бы узнать версию в коде на с++? Чтобы была директория инклуда кутэ что там что там?

Если определение платформы, то есть следующие макросы:

Погуглите «Как узнать версию QT C++»

а какой хидер прицепить чтобы там были эти надписи?

Из-за этого приходится переписывать инклуды хидеров — там разные директории до них.

Правильно: нужно переписывать билд-скрипты сборочной системы, подставляя требуемые пути там, а не хардкодить пути в самих исходниках.

Макрос unix не находит почему то, _WIN32 есть(хотя можно через него).

Правильно: нужно использовать определния вида QT_OS_WIN , QT_OS_LINUX из хедера QtGlobal : https://doc.qt.io/qt-6/qtglobal.html

Как бы узнать версию в коде на с++?

С помощью того же самого хедера QtGlobal , в котором имеются удобные директивы QT_VERSION и даже QT_VERSION_CHECK :

нужно переписывать билд-скрипты сборочной системы

Я до такого не дорос, ИДЕ собирает

А констант, содержащих версию, что нет?

printf(«Compiled with Qt Version %s\n», QT_VERSION_STR);

Всё там есть, на любой вкус и цвет.

Я до такого не дорос, ИДЕ собирает

Так расти и повышай квалификацию, если не хочешь навсегда остаться на уровне «IDE сама там делает какое-то волбшество» и плодить говнокод с условной компиляцией и вхардоженными путями, который тут описал.

таких макросов нет

Лучше один раз увидеть, чем сто раз погуглить.

Не используй в одном проекте под одну ОС Qt5, а под вторую Qt6. Упрешься в то, что в одной версии что-то есть, а в другой нет. Лучше установи требуемою версиб и там и там.

я не настолько крут, использую то что есть везде без фич и заморочек

Ну так научись. В установке ничего сложного нет.

на кой ляд мне 5я версия кутэ в винде, когда есть 6я — она безопасней и ею все пользуются

на кой ляд мне 5я версия кутэ в винде, когда есть 6я — она безопасней и ею все пользуются

Так и правильно. Поставь 6-ую в Linux. Вот официальный онлайн установщик https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run . Нужно зарегаться и устанавливаешь например в каталог /opt/Qt6.*.* . Но запускать установщик нужно под VPN, т.к. Qt-шники блочат наши ip адреса.

да я в курсе что блочат

Не используй в одном проекте под одну ОС Qt5, а под вторую Qt6. Упрешься в то, что в одной версии что-то есть, а в другой нет. Лучше установи требуемою версиб и там и там.

Ага, пусть мне будет хорошо, а тем, кто захотел мой проект собрать из исходников со своей системной Qt — плохо. Qt4 и Qt5 вполне поддерживаемы в одном проекте. Подозреваю, что и с Qt5+Qt6 вполне такое проворачивается.

Ага, пусть мне будет хорошо, а тем, кто захотел мой проект собрать из исходников со своей системной Qt — плохо

Одновременно совместимость с 5-ой и 6-ой версиями? Ты же в курсе, что в Qt полно функций с пометкой intoduced in Qt6… ? Предлагаешь их не использовать? А как быть с багами, которые закрывают только в новых версиях?

Это очень огроменная работа — обеспечить совместимость с двумя версиями Qt 5 и 6. Лучше это время и энергию потратить на новый функционал.

И да, если кто-то захотел собрать твой проект — то можно и Qt поставить с оф. сайта нужной версии.

Получить и установить Qt

Qt Online Installer дает вам возможность установить только те модули и инструменты,которые необходимы для разработки на определенной настольной платформе,и запускать свои приложения на одной или нескольких настольных платформах,мобильных или встраиваемых устройствах,или MCU.

1.Создайте учетную запись Qt

Для начала создайте учетную запись Qt . Эта учетная запись дает вам доступ к веб-порталу, где вы можете управлять своими лицензиями, а также доступ к форумам и вики. Кроме того, убедитесь, что вы прочитали страницу лицензирования Qt относительно выбранной вами лицензии.

2.Загрузите программу установки

Перейдите на страницу загрузки вашей учетной записи Qt.Выбрав подходящий унифицированный онлайн-установщик Qt для вашей ОС,вы можете установить коммерческие или открытые версии Qt,инструменты разработки и другие компоненты.Программа установки запрашивает учетные данные вашей учетной записи Qt.Программа установки получает с сервера лицензию,привязанную к учетной записи,и предоставляет список доступных компонентов,соответствующих этой лицензии.

3.Установите Qt

Для завершения установки выберите компоненты,которые вы хотите установить,и следуйте инструкциям программы установки.

Вы должны выбрать хотя бы одну версию Qt для одной платформы,на которой вы хотите запускать свои приложения.Например,если вы установили Microsoft Visual Studio 2019 на 64-битную Windows,вы можете выбрать MSVC 2019 64-bit под версией Qt,с которой вы хотите разрабатывать.

Однако самый простой способ установить Qt для разработки настольных систем-это выбрать установку по умолчанию.Дополнительные модули можно установить позже.

Если вы также хотите запускать свои приложения,например,на устройствах Android,вам следует выбрать пользовательскую установку,а затем выбрать версию Qt для Android в списке компонентов в дополнение к Qt для вашей настольной платформы.

В следующей таблице приведены примеры того,какие компоненты необходимо установить в зависимости от платформ,на которых вы хотите запускать свои приложения.

Развивать для Choose
Desktop Default installation.
Mobile Devices Пользовательская установка с Qt для вашей ОС и платформы мобильного устройства, на которой вы хотите запускать приложения. Например, Qt для Android или Qt для iOS .
Embedded Devices Выборочная установка с необходимыми модулями и наборами инструментов Qt из раздела Qt для создания устройств , в зависимости от типов устройств, на которых вы хотите запускать приложения.
Automotive Выборочная установка с необходимыми модулями и наборами инструментов Qt из раздела Qt для создания устройств , в зависимости от типов устройств, на которых вы хотите запускать приложения.
Automation Выборочная установка с необходимыми модулями и наборами инструментов Qt из раздела Qt для автоматизации , в зависимости от типов устройств, на которых вы хотите запускать приложения.
MCUs Выборочная установка с Qt для микроконтроллеров .

Чтобы проверить требования к платформе, см. Поддерживаемые платформы .

Следующее видео на YouTube дает полный обзор процесса установки:

Как только Qt будет установлен,вы можете использовать Maintenance Tool under <install_dir> для добавления компонентов,обновления или удаления установленных компонентов.

Getting Help

Пользователи ознакомительных версий и программ с открытым исходным кодом могут получить помощь на форуме Qt . См. также справку по использованию вики-страницы Форума .

Некоммерческие пользователи могут получить ограниченную помощь в процессе установки через службу поддержки Qt .

Основным каналом поддержки для коммерческих клиентов является их учетная запись Qt .

4.Создание приложений

После установки открывается Qt Creator . Вы можете использовать шаблоны мастера проектов, чтобы начать создавать приложения, работающие на выбранной вами платформе.

Если вы хотите разработать Qt Quick UI, откройте Qt Design Studio и используйте там шаблоны мастера проекта.

How to find Version of Qt?

How do I know which version of Qt I am using? When I open Qt Creator it shows «Welcome to Qt Creator 2.3». In the build setting, however, it shows Qt Version 4.7.1.

Marcucciboy2's user avatar

8 Answers 8

Starting with Qt 5.3 you can use:

This prints a bunch of useful information. The first line includes the version:

All the version info is in PyQt5.Qt:

The functions can be called too:

Neil G's user avatar

Oliver's user avatar

You are using Qt version 4.7.1, because that is the version of the qmake. You can also from shell type qmake -v to get it. The other version, namely 2.3, is the version of Qt Creator, not of Qt

my usual starting point to investigate which software is installed is with

you should get a list of installed packages. Then with

you get a list of installed files for that package

Francesco Casablanca's user avatar

QT_SELECT=4 qmake -v

QT_SELECT=5 qmake -v

If you’re using Python:

If you’re using C++:

Konstantin Burlachenko's user avatar

You can use qmake -query QT_VERSION:

    The Overflow Blog
Linked
Related
Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.3.43277

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

QSysInfo Class

Some constants are defined only on certain platforms. You can use the preprocessor symbols Q_OS_WIN and Q_OS_MACOS to test that the application is compiled under Windows or macOS.

Member Type Documentation

enum QSysInfo:: Endian

Constant Value Description
QSysInfo::BigEndian 0 Big-endian byte order (also called Network byte order)
QSysInfo::LittleEndian 1 Little-endian byte order
QSysInfo::ByteOrder BigEndian or LittleEndian Equals BigEndian or LittleEndian, depending on the platform’s byte order.

enum QSysInfo:: Sizes

This enum provides platform-specific information about the sizes of data structures used by the underlying architecture.

Constant Value Description
QSysInfo::WordSize (sizeof(void *)<<3) The size in bits of a pointer for the platform on which the application is compiled (32 or 64).

Member Function Documentation

[static] QByteArray QSysInfo:: bootUniqueId ()

Returns a unique ID for this machine’s boot, if one can be determined. If no unique ID could be determined, this function returns an empty byte array. This value is expected to change after every boot and can be considered globally unique.

This function is currently only implemented for Linux and Apple operating systems.

This function was introduced in Qt 5.11.

[static] QString QSysInfo:: buildAbi ()

Returns the full architecture string that Qt was compiled for. This string is useful for identifying different, incompatible builds. For example, it can be used as an identifier to request an upgrade package from a server.

The values returned from this function are kept stable as follows: the mandatory components of the result will not change in future versions of Qt, but optional suffixes may be added.

The returned value is composed of three or more parts, separated by dashes («-«). They are:

Component Value
CPU Architecture The same as QSysInfo::buildCpuArchitecture(), such as «arm», «i386», «mips» or «x86_64»
Endianness «little_endian» or «big_endian»
Word size Whether it’s a 32- or 64-bit application. Possible values are: «llp64» (Windows 64-bit), «lp64» (Unix 64-bit), «ilp32» (32-bit)
(Optional) ABI Zero or more components identifying different ABIs possible in this architecture. Currently, Qt has optional ABI components for ARM and MIPS processors: one component is the main ABI (such as «eabi», «o32», «n32», «o64»); another is whether the calling convention is using hardware floating point registers («hardfloat» is present).

Additionally, if Qt was configured with -qreal float , the ABI option tag «qreal_float» will be present. If Qt was configured with another type as qreal, that type is present after «qreal_», with all characters other than letters and digits escaped by an underscore, followed by two hex digits. For example, -qreal long double becomes «qreal_long_20double».

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: buildCpuArchitecture ()

Returns the architecture of the CPU that Qt was compiled for, in text format. Note that this may not match the actual CPU that the application is running on if there’s an emulation layer or if the CPU supports multiple architectures (like x86-64 processors supporting i386 applications). To detect that, use currentCpuArchitecture().

Values returned by this function are stable and will not change over time, so applications can rely on the returned value as an identifier, except that new CPU types may be added over time.

Typical returned values are (note: list not exhaustive):

  • «arm»
  • «arm64»
  • «i386»
  • «ia64»
  • «mips»
  • «mips64»
  • «power»
  • «power64»
  • «sparc»
  • «sparcv9»
  • «x86_64»

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: currentCpuArchitecture ()

Returns the architecture of the CPU that the application is running on, in text format. Note that this function depends on what the OS will report and may not detect the actual CPU architecture if the OS hides that information or is unable to provide it. For example, a 32-bit OS running on a 64-bit CPU is usually unable to determine the CPU is actually capable of running 64-bit programs.

Values returned by this function are mostly stable: an attempt will be made to ensure that they stay constant over time and match the values returned by QSysInfo::builldCpuArchitecture(). However, due to the nature of the operating system functions being used, there may be discrepancies.

Typical returned values are (note: list not exhaustive):

  • «arm»
  • «arm64»
  • «i386»
  • «ia64»
  • «mips»
  • «mips64»
  • «power»
  • «power64»
  • «sparc»
  • «sparcv9»
  • «x86_64»

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: kernelType ()

Returns the type of the operating system kernel Qt was compiled for. It’s also the kernel the application is running on, unless the host operating system is running a form of compatibility or virtualization layer.

Values returned by this function are stable and will not change over time, so applications can rely on the returned value as an identifier, except that new OS kernel types may be added over time.

On Windows, this function returns the type of Windows kernel, like «winnt». On Unix systems, it returns the same as the output of uname -s (lowercased).

Note: This function may return surprising values: it returns «linux» for all operating systems running Linux (including Android), «qnx» for all operating systems running QNX, «freebsd» for Debian/kFreeBSD, and «darwin» for macOS and iOS. For information on the type of product the application is running on, see productType().

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: kernelVersion ()

Returns the release version of the operating system kernel. On Windows, it returns the version of the NT kernel. On Unix systems, including Android and macOS, it returns the same as the uname -r command would return.

If the version could not be determined, this function may return an empty string.

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: machineHostName ()

Returns this machine’s host name, if one is configured. Note that hostnames are not guaranteed to be globally unique, especially if they were configured automatically.

This function does not guarantee the returned host name is a Fully Qualified Domain Name (FQDN). For that, use QHostInfo to resolve the returned name to an FQDN.

This function returns the same as QHostInfo::localHostName().

This function was introduced in Qt 5.6.

[static] QByteArray QSysInfo:: machineUniqueId ()

Returns a unique ID for this machine, if one can be determined. If no unique ID could be determined, this function returns an empty byte array. Unlike machineHostName(), the value returned by this function is likely globally unique.

A unique ID is useful in network operations to identify this machine for an extended period of time, when the IP address could change or if this machine could have more than one IP address. For example, the ID could be used when communicating with a server or when storing device-specific data in shared network storage.

Note that on some systems, this value will persist across reboots and on some it will not. Applications should not blindly depend on this fact without verifying the OS capabilities. In particular, on Linux systems, this ID is usually permanent and it matches the D-Bus machine ID, except for nodes without their own storage (replicated nodes).

This function was introduced in Qt 5.11.

[static] QString QSysInfo:: prettyProductName ()

Returns a prettier form of productType() and productVersion(), containing other tokens like the operating system type, codenames and other information. The result of this function is suitable for displaying to the user, but not for long-term storage, as the string may change with updates to Qt.

If productType() is «unknown», this function will instead use the kernelType() and kernelVersion() functions.

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: productType ()

Returns the product name of the operating system this application is running in. If the application is running on some sort of emulation or virtualization layer (such as WINE on a Unix system), this function will inspect the emulation / virtualization layer.

Values returned by this function are stable and will not change over time, so applications can rely on the returned value as an identifier, except that new OS types may be added over time.

Linux and Android note: this function returns «android» for Linux systems running Android userspace, notably when using the Bionic library. For all other Linux systems, regardless of C library being used, it tries to determine the distribution name and returns that. If determining the distribution name failed, it returns «unknown».

macOS note: this function returns «osx» for all macOS systems, regardless of Apple naming convention. The returned string will be updated for Qt 6. Note that this function erroneously returned «macos» for macOS 10.12 in Qt versions 5.6.2, 5.7.1, and 5.8.0.

Darwin, iOS, tvOS, and watchOS note: this function returns «ios» for iOS systems, «tvos» for tvOS systems, «watchos» for watchOS systems, and «darwin» in case the system could not be determined.

FreeBSD note: this function returns «debian» for Debian/kFreeBSD and «unknown» otherwise.

Windows note: this function «winrt» for WinRT builds, and «windows» for normal desktop builds.

For other Unix-type systems, this function usually returns «unknown».

This function was introduced in Qt 5.4.

[static] QString QSysInfo:: productVersion ()

Returns the product version of the operating system in string form. If the version could not be determined, this function returns «unknown».

It will return the Android, iOS, macOS, Windows full-product versions on those systems.

Typical returned values are (note: list not exhaustive):

  • «2016.09» (Amazon Linux AMI 2016.09)
  • «7.1» (Android Nougat)
  • «25» (Fedora 25)
  • «10.1» (iOS 10.1)
  • «10.12» (macOS Sierra)
  • «10.0» (tvOS 10)
  • «16.10» (Ubuntu 16.10)
  • «3.1» (watchOS 3.1)
  • «7 SP 1» (Windows 7 Service Pack 1)
  • «8.1» (Windows 8.1)
  • «10» (Windows 10)
  • «Server 2016» (Windows Server 2016)

On Linux systems, it will try to determine the distribution version and will return that. This is also done on Debian/kFreeBSD, so this function will return Debian version in that case.

In all other Unix-type systems, this function always returns «unknown».

Note: The version string returned from this function is not guaranteed to be orderable. On Linux, the version of the distribution may jump unexpectedly, please refer to the distribution’s documentation for versioning practices.

This function was introduced in Qt 5.4.

© 2022 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *