Qt的宏定义区分不同操作系统

程序中遇到需要区分操作系统时,可使用qt的宏定义:

中,定义了各个系统的宏定义

Q_OS_AIX
Defined on AIX.
Q_OS_ANDROID
Defined on Android.
Q_OS_BSD4
Defined on Any BSD 4.4 system.
Q_OS_BSDI
Defined on BSD/OS.
Q_OS_CYGWIN
Defined on Cygwin.
Q_OS_DARWIN
Defined on Darwin-based operating systems such as macOS, iOS, watchOS, and tvOS.
Q_OS_DGUX
Defined on DG/UX.
Q_OS_DYNIX
Defined on DYNIX/ptx.
Q_OS_FREEBSD
Defined on FreeBSD.
Q_OS_HPUX
Defined on HP-UX.
Q_OS_HURD
Defined on GNU Hurd.
Q_OS_IOS
Defined on iOS.
Q_OS_IRIX
Defined on SGI Irix.
Q_OS_LINUX
Defined on Linux.
Q_OS_LYNX
Defined on LynxOS.
Q_OS_MAC
Deprecated synonym for Q_OS_DARWIN. Do not use.
Q_OS_MACOS
Defined on macOS.
Q_OS_NETBSD
Defined on NetBSD.
Q_OS_OPENBSD
Defined on OpenBSD.
Q_OS_OSF
Defined on HP Tru64 UNIX.
Q_OS_OSX
Deprecated synonym for Q_OS_MACOS. Do not use.
Q_OS_QNX
Defined on QNX Neutrino.
Q_OS_RELIANT
Defined on Reliant UNIX.
Q_OS_SCO
Defined on SCO OpenServer 5.
Q_OS_SOLARIS
Defined on Sun Solaris.
Q_OS_TVOS
Defined on tvOS.
Q_OS_ULTRIX
Defined on DEC Ultrix.
Q_OS_UNIX
Defined on Any UNIX BSD/SYSV system.
Q_OS_UNIXWARE
Defined on UnixWare 7, Open UNIX 8.
Q_OS_WATCHOS
Defined on watchOS.
Q_OS_WIN32
Defined on 32-bit and 64-bit versions of Windows.
Q_OS_WIN64
Defined on 64-bit versions of Windows.
Q_OS_WIN
Defined on all supported versions of Windows. That is, if Q_OS_WIN32, Q_OS_WIN64, or Q_OS_WINRT is defined.
Q_OS_WINPHONE
Defined on Windows Phone 8.
Q_OS_WINRT
Defined for Windows Runtime (Windows Store apps) on Windows 8, Windows RT, and Windows Phone 8.

举例1:
记得需要有QObject的头文件,才可以

1
2
3
4
5
6
7
#include<QObject>

#ifdef Q_OS_WIN
#include <winsock2.h>
#endif

#include <mysql.h>

举例2:
对于标记了Q_OBJECT这个宏的类,其成员函数可以直接上面的区分操作系统的这些宏定义。

***.h文件:

1
2
3
4
5
6
7
8
9
10
11
class DetailStepInfo : public QObject
{
Q_OBJECT

public:

....................

...................

}

***.cpp文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool DetailStepInfo::**************()
{

#ifdef Q_OS_WIN

#endif

#ifdef Q_OS_LINUX
QString command = QString("chmod +rw /****************************");
QProcess proc;
proc.execute(command);
#endif

...........................

}

Qt的宏定义区分不同操作系统

http://tux.red/2023/08/06/Qt/qt-os-define/

作者

redtux

发布于

2023-08-06

更新于

2023-08-06

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.