文章目录

  • 获取源代码和编译
  • 参考:
  • 移植Qt应用程序
  • 已知问题
  • 获得帮助和报告问题

简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为 Qt 5 on Wayland.

Qt 5工具箱中的Wayland支持在Qt Platform Abstraction(QPA) Wayland插件中进行。构建和使用QtWayland的最低要求是Wayland(和Weston)1.0.0。

如果您还想构建qtwebkit浏览器,则最好遵循从git构建Qt 5的说明,该指南可生成更多内容。init-repository脚本在失败时时候(不幸的是经常失败),会不智能的当地返回错误,因此您需要手动运行它并确保它不会输出错误。

第三个选项是Qt 5 Alpha构建指令,它比git指令更小且更可靠,同时仍包含qtwebkit,但对于Wayland客户端需要LD_PRELOAD:
$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libfontconfig.so.1 ./fancybrowser -platform wayland

  • 获取源代码并进行编译
  • 尝试一下
  • 移植您的Qt应用程序
  • 已知的问题
  • 获取帮助并报告问题

获取源代码和编译

要想尝试的话,的首先要克隆 qtbase:

$ mkdir qt; cd qt
$ git clone git://code.qt.io/qt/qtbase.git

编译需要设置一些env变量:

$ export QTVER=qt5
$ export QTDIR=/opt/qt/$QTVER
$ export PATH=$QTDIR/bin/:$PATH
$ export LD_LIBRARY_PATH=$QTDIR/lib/:$LD_LIBRARY_PATH
$ export PKG_CONFIG_PATH=$QTDIR/lib/pkgconfig/:$PKG_CONFIG_PATH
$ export QT_PLUGIN_PATH=$QTDIR/lib/plugins/
$ ./configure -confirm-license -opensource -debug -nomake examples \-nomake tests -nomake demos -make libs --prefix ${QTDIR}
$ make
$ sudo make install

在这里,还需要克隆并构建qtdeclarative:

git://code.qt.io/qt/qtdeclarative.git

要构建它们,运行以下命令:

$ qmake
$ make
$ sudo make install

此时,已经准备好了所有需要的Qt库和编译QtWayland平台所需的工具:

$ cd ../
$ git clone git://code.qt.io/qt/qtwayland.git
$ cd qtwayland/
$ qmake
$ make
$ sudo make install

参考:

首先,不能忘了设置XDG目录,以及之前设置的编译Qt的变量,以及重新运行.bashrc:

$ export XDG_RUNTIME_DIR=$HOME/.xdg
$ mkdir $HOME/.xdg

也可以在Wayland和X之间来回跳转("-platform xcb"),以比较Wayland和X下的应用程序的外观和感觉:

$ cd ../qtbase/examples/opengl/hellowindow
$ qmake
$ make
$ weston &
$ ./hellowindow -platform wayland

移植Qt应用程序

Qt 5的结构是Lighthouse(或Qt Platform)抽象,即窗口系统和设备不可知的架构。这意味着Qt可以根据需要在运行时为不同的窗口系统加载不同的后台插件。例如,一个在Qt上开发的应用,可以分别使用"-platform xcb “和”-platform wayland "来运行XCB或Wayland(或设置QT_QPA_PLATFORM环境变量),在这两个系统上应该有类似的行为,而不需要重新编译。

Qt抽象也向应用开发者公开了Wayland的两个本地资源:wl_displaywl_surface。有了这些,开发者就可以通过接口访问Wayland的内部资源来处理一特殊情况。

    void *QPlatformNativeInterface::nativeResourceForWindow(const QByteArray &resource, QWindow *window)

获取显示全局处理程序很直接,如下例所示:

    QPlatformNativeInterface *native =QGuiApplication::platformNativeInterface();struct wl_display *wl_dpy = (struct wl_display *)native->nativeResourceForWindow("display", NULL);

wl_surface:

    QPlatformNativeInterface *native =QGuiApplication::platformNativeInterface();struct wl_surface *surface = static_cast<struct wl_surface *>(native->nativeResourceForWindow("surface", this->windowHandle()));

已知问题

  • 有关 QtWayland错误的列表,请参见Qt错误跟踪器。

获得帮助和报告问题

在irc.freenode.net上尝试#qt-labs IRC频道

Qt5 on Wayland相关推荐

  1. i.MX Yocto项目用户指南 -- 下

    i.MX Yocto项目用户指南 – 下 5映像构建 本节提供了构建映像的详细信息和过程. 5.1构建配置 i. MX提供了一个脚本fsl-setup-release.sh,它简化了i.MX机器的设置 ...

  2. 全志 Tina Linux 图形系统 框架介绍 最全介绍 MiniGUI、QT5、EFL、GTK+(WebkitGtk、Midori)、DirectFB、Wayland

    1 概述 本文档将介绍 Allwinner Tina Linux 中已经移植好的窗口系统,以及怎么使用,包括 MiniGUI.QT5.EFL.GTK+(WebkitGtk.Midori).Direct ...

  3. c++ qt5范例开发大全_使用yocto工具编译qt5.9.6总结

    运行平台:OKMX6DL-C 编译平台:Ubuntu 14.04.6 LTS 编译工具:arm-poky-linux-gnueabi-gcc(gcc version 5.3.0 (GCC) ) qt源 ...

  4. arm ubuntu 编译boost_使用yocto工具编译qt5.9.6总结

    运行平台:OKMX6DL-C 编译平台:Ubuntu 14.04.6 LTS 编译工具:arm-poky-linux-gnueabi-gcc(gcc version 5.3.0 (GCC) ) qt源 ...

  5. Ubuntu18.04安装配置Qt5.15

    Ubuntu18.04安装配置Qt5.15 Qt选择 下载Qt 安装Qt5.15.0 配置 后记 Qt选择 在官方的声明中,Qt5.15是Qt5.x的最后一个LTS版本,增加了即将在2020年底推出的 ...

  6. X11 Wayland 及 Mir 比较

    Mir Canonical 2013年3月宣布开发自己的显示服务器 Mir之后,引发了开源界的大量谴责,很多人指责Canonical为什么不采用被设计用来取代X11的Wayland,Wayland的开 ...

  7. Wayland (简体中文)

    Kernel Mode Setting (简体中文) Xorg Screen capture#Wayland 翻译状态:本文是 Wayland 的 翻译.上次翻译日期:2020-08-08.如果英文版 ...

  8. 全志T7/T507 Qt5.12.5移植记录

    1.概述 Qt5.12.5移植过程中遇到一些坑,特意记录下来. 主要包括编译.运行.环境配置三个部分. 2.编译配置 2.1.配置脚本 新建setenvs512.sh脚本,设置编译环境和选项,放入Qt ...

  9. qt5.11.12移植到安卓,并适配surfaceflinger,或自定义qpa

    注意问题,不能随便换工具链,否者会出现各种问题. ./configure \ -sysroot  ~/android-ndk-r16b/platforms/android-27/arch-arm64/ ...

最新文章

  1. iOS中UITextField 使用全面解析
  2. ununtu20.04系统中如何划词翻译_如何高效阅读PDF外文文献,这一篇文章全搞定
  3. ABAP性能优化之使用二分查找(Binary Search)选项
  4. 江苏联合阿里云启动“1+30+300”工程 制造业大省欲打造智造模板
  5. 安卓中,当activity处于不可见时将立即消毁
  6. matlab脉冲调制,基于matlab脉宽调制方法的研究
  7. mysql添加字段语句_mysql增加字段 mysql数据库更新字段语句
  8. Android_GitHub_xUtils之DbUtils、ViewUtils、HttpUtils、BitmapUtils
  9. 〈四〉ElasticSearch的认识:基础原理的补充
  10. bzGhost 打造跨平台即时聊天软件之websocket
  11. 为什么想来我们公司工作?- 面试常见问题解析
  12. 用Unity做游戏,你需要深入了解一下IL2CPP
  13. keystore生成自签名证书
  14. 电子设计竞赛(6)-逆变电路
  15. 2019年风险投资人 ( VCPE ) 汇总
  16. 梯度下降法求解方程的极值
  17. shell计算命令-bc命令详解
  18. 万达商业再递招股书:上半年派息35亿 腾讯与碧桂园是股东
  19. python怎么建立画板_Python3使用PyQt5制作简单的画板/手写板实例
  20. 七款文件夹加密软件推荐及使用指南

热门文章

  1. golang_获取文件属性: os包中os.Stat的用法介绍
  2. 「GRUB」- 在BIOS系统上的GRUB引导 @20210221
  3. 东芝TB67S539FTG推出无需电流感应电阻的40V/2.0A步进电机驱动IC
  4. 如何将U盘作为虚拟光驱使用呢?
  5. 视频消重处理,视频原创怎么做,视频处理软件
  6. 数据挖掘 贝叶斯网络
  7. 批处理中的注释语句:rem
  8. Incorrect string value错误解决
  9. GPU性能优化之CUDA调优指南
  10. explode与lateral view解析 hive