如何在 cross-platform 应用程序中使用 QtWinExtras

How to use QtWinExtras in cross-platform application

我应该分开模块并且 header 包含条件语句,例如

/// .pro file
win32:QT += winextras

/// .cpp file
#ifdef Q_OS_WIN
#include <QtWin>
#endif
/// ... later
#ifdef Q_OS_WIN
QWinTaskbarButton *taskbarButton = new QWinTaskbarButton(this);
#endif

或者我可以省略那些条件吗?

如果你想为多个平台编译你的项目,你一定要有条件地使用它们。这是因为 winextrasx11extrasmacextrasandroidextras 等模块仅适用于特定的 OS。例如在 Linux 上,qmake 在制作使用 winextras 的项目时会给你错误。

除非你只想为特定平台编译它,否则没有必要让它成为条件。所以这完全取决于您和您的用例。