Qt5 on Wayland
文章目录
- 获取源代码和编译
- 参考:
- 移植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_display
和wl_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相关推荐
- i.MX Yocto项目用户指南 -- 下
i.MX Yocto项目用户指南 – 下 5映像构建 本节提供了构建映像的详细信息和过程. 5.1构建配置 i. MX提供了一个脚本fsl-setup-release.sh,它简化了i.MX机器的设置 ...
- 全志 Tina Linux 图形系统 框架介绍 最全介绍 MiniGUI、QT5、EFL、GTK+(WebkitGtk、Midori)、DirectFB、Wayland
1 概述 本文档将介绍 Allwinner Tina Linux 中已经移植好的窗口系统,以及怎么使用,包括 MiniGUI.QT5.EFL.GTK+(WebkitGtk.Midori).Direct ...
- 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源 ...
- 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源 ...
- Ubuntu18.04安装配置Qt5.15
Ubuntu18.04安装配置Qt5.15 Qt选择 下载Qt 安装Qt5.15.0 配置 后记 Qt选择 在官方的声明中,Qt5.15是Qt5.x的最后一个LTS版本,增加了即将在2020年底推出的 ...
- X11 Wayland 及 Mir 比较
Mir Canonical 2013年3月宣布开发自己的显示服务器 Mir之后,引发了开源界的大量谴责,很多人指责Canonical为什么不采用被设计用来取代X11的Wayland,Wayland的开 ...
- Wayland (简体中文)
Kernel Mode Setting (简体中文) Xorg Screen capture#Wayland 翻译状态:本文是 Wayland 的 翻译.上次翻译日期:2020-08-08.如果英文版 ...
- 全志T7/T507 Qt5.12.5移植记录
1.概述 Qt5.12.5移植过程中遇到一些坑,特意记录下来. 主要包括编译.运行.环境配置三个部分. 2.编译配置 2.1.配置脚本 新建setenvs512.sh脚本,设置编译环境和选项,放入Qt ...
- qt5.11.12移植到安卓,并适配surfaceflinger,或自定义qpa
注意问题,不能随便换工具链,否者会出现各种问题. ./configure \ -sysroot ~/android-ndk-r16b/platforms/android-27/arch-arm64/ ...
最新文章
- iOS中UITextField 使用全面解析
- ununtu20.04系统中如何划词翻译_如何高效阅读PDF外文文献,这一篇文章全搞定
- ABAP性能优化之使用二分查找(Binary Search)选项
- 江苏联合阿里云启动“1+30+300”工程 制造业大省欲打造智造模板
- 安卓中,当activity处于不可见时将立即消毁
- matlab脉冲调制,基于matlab脉宽调制方法的研究
- mysql添加字段语句_mysql增加字段 mysql数据库更新字段语句
- Android_GitHub_xUtils之DbUtils、ViewUtils、HttpUtils、BitmapUtils
- 〈四〉ElasticSearch的认识:基础原理的补充
- bzGhost 打造跨平台即时聊天软件之websocket
- 为什么想来我们公司工作?- 面试常见问题解析
- 用Unity做游戏,你需要深入了解一下IL2CPP
- keystore生成自签名证书
- 电子设计竞赛(6)-逆变电路
- 2019年风险投资人 ( VCPE ) 汇总
- 梯度下降法求解方程的极值
- shell计算命令-bc命令详解
- 万达商业再递招股书:上半年派息35亿 腾讯与碧桂园是股东
- python怎么建立画板_Python3使用PyQt5制作简单的画板/手写板实例
- 七款文件夹加密软件推荐及使用指南