【问题标题】:How to determine if application is running on X11 platform on Qt6?如何确定应用程序是否在 Qt6 的 X11 平台上运行?
【发布时间】:2021-06-30 15:26:58
【问题描述】:

我正在努力将 Qt5 应用程序移植到 Qt6。由于Qt6中删除了Qt X11 Extras模块,我必须检查平台是否为X11,我该怎么做?

这是当前实现所使用的。

 if (QX11Info::isPlatformX11())
    {
        ...
        ...
    }

我还有 QX11Info 类的其他用例。我该如何移植这个?我似乎没有找到任何其他解决方案。

【问题讨论】:

  • 可能跑题了,但是...请问您为什么需要QX11Info?您使用什么特定功能?
  • @G.M.该代码使用它查找系统上设置的 ICC 监视器配置文件。代码具体使用QX11Info::display()QX11Info::appScreenQX11Info::appRootWindow()
  • 它只使用if(QGuiApplication::platformName() == QLatin1String("xcb")){},这实际上就是该函数在Qt5中所做的。 code.qt.io/cgit/qt/qtx11extras.git/tree/src/x11extras/…

标签: c++ qt qt5 qt6


【解决方案1】:

QGuiApplication::platformName() 检查应该没问题,见https://doc.qt.io/qt-6/qguiapplication.html#platformName-prop

顺便说一句,QtX11Extras 中的 QX11Info 和其他内容已移至 QtGui(dev 分支,6.2),另见 https://codereview.qt-project.org/c/qt/qtbase/+/348530

【讨论】:

  • 谢谢。我打算直接使用 QX11Extras 中使用的代码。很高兴现在是 Qt6。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
相关资源
最近更新 更多