首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt5:在X11根屏幕上绘制(并更改现有QWidget的WId

Qt5是一款跨平台的C++图形用户界面(GUI)开发框架,它提供了丰富的工具和库,用于开发各种应用程序。在X11根屏幕上绘制并更改现有QWidget的WId,可以通过以下步骤实现:

  1. 创建一个新的Qt Widgets应用程序项目,并在项目中包含Qt5的头文件和库。
  2. 在主窗口类中,重写paintEvent函数,该函数用于绘制窗口的内容。
  3. paintEvent函数中,可以使用Qt提供的绘图工具进行绘制操作。可以使用QPainter类来绘制各种形状、文本和图像。
  4. 若要在X11根屏幕上绘制,可以使用QX11Info类获取X11相关的信息。例如,可以使用QX11Info::appRootWindow()获取根窗口的WId。
  5. 使用获取到的根窗口的WId,可以创建一个QWidget对象,并将其WId设置为根窗口的WId。这样,该QWidget对象就可以在根窗口上进行绘制。

以下是一个示例代码:

代码语言:txt
复制
#include <QtWidgets>

class MainWindow : public QWidget {
public:
    MainWindow(QWidget *parent = nullptr) : QWidget(parent) {}

protected:
    void paintEvent(QPaintEvent *event) override {
        QPainter painter(this);
        painter.drawText(rect(), Qt::AlignCenter, "Hello, World!");
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    MainWindow window;
    window.show();

    // 获取根窗口的WId
    WId rootWId = QX11Info::appRootWindow();

    // 创建一个新的QWidget对象,并将其WId设置为根窗口的WId
    QWidget rootWidget;
    rootWidget.create((WId)rootWId);

    // 在根窗口上绘制
    QPainter painter(&rootWidget);
    painter.drawText(rootWidget.rect(), Qt::AlignCenter, "Hello, World!");

    return app.exec();
}

这个示例代码创建了一个简单的窗口,并在窗口中心绘制了文本。然后,它获取了根窗口的WId,并创建了一个新的QWidget对象,将其WId设置为根窗口的WId。最后,使用这个新的QWidget对象在根窗口上进行绘制。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云容器服务(TKE)。腾讯云服务器提供了可靠的云计算基础设施,适用于各种应用场景。腾讯云容器服务是一种高度可扩展的容器管理服务,可帮助您轻松部署、管理和扩展容器化应用程序。

更多关于腾讯云服务器的信息,请访问:腾讯云服务器

更多关于腾讯云容器服务的信息,请访问:腾讯云容器服务

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python基础 PyQt5(一)

今天小编给大家带就是神奇pyqt5了! pyqt5是一套Python绑定Digia QT5应用框架。它可用于Python 3。...wid = QWidget() QWidget部件是pyqt5所有用户界面对象基类。他为QWidget提供默认构造函数。默认构造函数没有父类。...resize方法是用来控制生成窗口大小,在这里我们就是生成一个200px*160px大小窗口 move方法是用来控制窗口出现位置,这里我们设置参数就是,距离屏幕左边600px,距离屏幕上边400px...但是这边我们还有个sys.exit()方法,这个是用来控制程序退出,如果没有这句话,程序会直接运行结束。sys.exit()是系统退出方法,这个我们sys模块里讲过。...(不知道为什么,那个Hello world总是截图时候消失。。。) 下面我们来写一个消息框,退出时候显示出来,调用question方法: ? 执行代码: ?

1.3K41

dotnet 理解 X11 24 位或 32 位色深窗口

比如常见 24 色就是 RGB 三个颜色分量,一个颜色分量占 8 个 bit 长度。而 32 色常见就是 24 色基础加上 8 个 bit Alpha 透明度。...RootWindowDepth=24 内容,证明默认就是 24 色 堆栈网上也有大佬说了这个事情 很古老时候默认 X11 就使用是 24 色,不包含透明色 而对于 CPF 或 Avalonia...对接常用代码 当 Skia 绘制完成之后,收到 X11 曝光事件时,可以使用 XPutImage 进行推送,大概代码如下 if (@event.type == XEventName.Expose...之后,可以立刻让 Skia 绘制画面的原因 通过以上逻辑也可以看到此时使用 Skia 进行软渲染绘制,是需要在 XLib 底层做一次图片像素二进制拷贝,即 Skia 输出内容不是直接到屏幕,相当于离屏渲染...,再通过 XLib 将图片发送到 X 服务进行绘制,最后再显示到屏幕 更多细节还请大家自行阅读源代码,这部分代码很多都是 20 多年都没有更改

8810
  • OSG嵌入QT简明总结

    1.解决方案 不得不说关于OSG资料实在太零散了,搜索了很多关于OSGQT下解决方案,都是各有各说法,有的说不是很清楚,有的已经过时了。这里提供一下自己解决方案吧。...远古OSG里面,应该是提供对QT支持;不过应该是由于QT版本变动比较大,现在OSG版本应该已经没有了。...但是GitHub又有了新osgQt项目(地址:https://github.com/openscenegraph/osgQt) 用来解决这个问题。...osgviewerQt中绑定了一个定时器,每隔10ms就调用frame()来绘制一帧,而这个定时器是构造函数时候就开始调用了,没有等待QT中OpenGL环境生成。...在这里我把定时器部分给改进了一下,等待OSG环境初始化完成启动定时器,这个警告就没有了。

    4.8K20

    荔枝派Zero(全志V3S)基于QT实现在LCD显示图片

    前言 有这样一个需求,通过配置 QT, linux 下实现显示我所想要显示图片,实现方式是我可以命令行将图片路径作为入参传入进去,从而对其进行显示,之前文章中已实现了板子运行 QT5...rootfs.tar 解压到刚创建rootfs分区根目录 buildroot-2017.08 根目录下 find ./ -name rootfs.tar sudo tar xf ..../media/Gnep/rootfs/ 3、此外也找两张图片拷贝到 SD 卡 rootfs 分区,一张为 google.png,另一张为 Spongebob.jpg 五、板子测试 1、到根目录下...ls 查看一下我们需要用到文件 cd / ls 2、运行 ImageShow 指定图片路径,查看 LCD 屏幕 ①、显示 google.png ..../ImageShow Spongebob.jpg -platform linuxfb 问题记录: 第一次板子测试时候屏幕为白屏,图片显示不出来,后来将 buildroot 先执行了 make

    53540

    『PyQt5-基础篇』| 01 简单基础了解

    1.1 支持平台MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008、win10Unix/X11 -Linux、SunSolaris...、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台Macintosh -Mac OS XEmbedded - 有帧缓冲(framebuffer...2 PyQt5PyQt5是基于图形程序框架Qt5Python语言实现;官网:https://riverbankcomputing.com/;图片PyQt5文档地址:https://www.riverbankcomputing.com...类说明QObject 顶部类(Top Class),是所有PyQt对象基类QPaintDevice 所有可绘制对象基类QApplication管理图形用户界面应用程序控制流和主要设置QWidget...QListView显示和控制可选多选列表,可以设置ListMode或IconModeQPixmap绘图设备显示图像,通常放在QLabel或QPushButton类中 Qdialog对话框窗口基类

    38360

    Linux平台屏幕|摄像头采集实现RTMP推送两种技术方案探究

    ​ 技术背景随着国产化操作系统推进,市场对国产化操作系统下生态构建,需求越来越迫切,特别是音视频这块,今天我们讨论是如何在linux平台实现屏幕|摄像头采集,推送至RTMP服务。...FFmpeg VS SmartPublisher今天我们探讨是,两种技术选型下linux平台同屏摄像头RTMP推送实现:FFmpeg技术方案Linux平台上采集屏幕和摄像头内容,并将其推送到RTMP...例如,Ubuntu,你可以使用以下命令:sudo apt update sudo apt install ffmpeg 2 确定摄像头设备Linux,摄像头通常被识别为/dev/videoX设备...这里,它首先将屏幕捕获视频向右填充640像素(摄像头宽度),然后将摄像头视频覆盖填充后屏幕视频右侧。-map "[out]":选择过滤器图输出作为最终输出。...\n");}return true;}open_config_instance()实现如下,可以获取摄像头或屏幕数据,做基础编码等参数配置,看似复杂,实际和Windows平台相差不大:NT_HANDLE

    11510

    Qt编写自定义控件60-声音波形图

    一、前言 这个控件源自于一个音乐播放器,写该音乐播放器时候,需要将音频数据转换成对应频谱显示,采用fmod第三方库来处理(fmod声音系统是为游戏开发者准备革命性音频引擎,非常强大和牛逼),...fmod负责拿到音频数据对应采样频谱数据,然后传给这个控件进行绘制即可,本控件主需要专注于绘制即可,这样fmod对应封装类专注于音频采集等处理,实现了隔离,修改和增加功能比较方便,声音波形图控件除了可以设置采样深度以外...} if (min > data.at(i)) { min = data.at(i); } } //转化成当前屏幕坐标大小...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...Qt入门书籍推荐霍亚飞《Qt Creator快速入门》《Qt5编程入门》,Qt进阶书籍推荐官方《C++ GUI Qt4编程》。

    1.9K20

    Qt Quick开发(QML,CMake企业级实战项目)

    没错,QML文件中允许搭配Javascript代码,就可以辅助实现丰富UI交互逻辑。如果你以往习惯QWidget开发,那么Qt Quick真的非常值得上手试试。 ...Qt Quick2(适用于触摸屏UI开发),增加了对C++11支持,加强了对JavaScript和QML支持,可以混合编程,Qt5是Qt4渐进而平缓升级,与Qt4高度兼容  Qt5下,QWidget...系列从QtGui中被剥离出去,成为单独QtWidget模块,随着Qt Quick2引入,QtDeclarative也逐渐和QWidget系列脱离关系,Qt5GUI编程,有两套不同东西:QtWidget...可以通过向 states 属性添加状态项来定义新状态,以允许项不同配置之间切换Transition(过度):发生状态更改时要应用动画Animation(动画):随着时间推移逐渐改变属性Qt Quick...使用它可轻松地为移动和嵌入式设备创建流畅用户界面。 Android 设备, Qt Quick 应用默认使用 OpenGL ES ,渲染效率很高,你能够用它创建很炫很酷很迷人界面。

    14110

    Qt编写控件属性设计器7-串口采集

    串口通信大量工业控制领域用最多,就因为稳定两个字,长期霸占了几十年通信规则,现在还有大量工业控制设备使用就是串口通信,Qt5以后封装了串口通信类,不过据说不大好用,也不大稳定,本人在早期...Qt5,还没升级到Qt5可能也是考虑到稳定性原因。...所有控件属性自动提取显示右侧属性栏,包括枚举值下拉框等。 支持手动选择插件文件,外部导入插件文件。 可以将当前画布所有控件配置信息导出到xml文件。...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...Qt入门书籍推荐霍亚飞《Qt Creator快速入门》《Qt5编程入门》,Qt进阶书籍推荐官方《C++ GUI Qt4编程》。

    2.2K00

    Linux平台x86_64(麒麟|统信UOS)|aarch64(飞腾)如何实现摄像头|屏幕和麦克风|扬声器采集推送RTMP服务或轻量级RTSP服务

    处理大型数据库、复杂应用和高性能计算任务时表现出色。广泛兼容性:x64架构保持对x86指令集兼容性同时,增加了新指令和寄存器。...这意味着大多数旧32位软件(通过兼容层或模拟器)和操作系统可以x64架构运行,从而保护了用户投资。...对旧软件依赖:尽管x64架构提供了对旧32位软件兼容性,但这种兼容性可能需要额外软件层或模拟器,可能会影响性能增加复杂性。...废话不多说,上代码,这里分别是启动了轻量级RTSP服务,实现了RTMP推送。...:AAC/SPEEX;视频编码:H.264;推流协议:RTMP;[音视频]支持纯音频/纯视频/音视频推送;支持X11屏幕采集;支持部分V4L2摄像头设备采集;[屏幕/V4L2摄像头]支持帧率、关键帧间隔

    18110

    QT入门基础(一)

    += qrc/painter.qrc greaterThan(QT_MAJOR_VERSION, 4): QT += widgets:如果QT_MAJOR_VERSION大于4(也就是当前使用Qt5...此时我们称两个窗口建立了父子关系 在有父窗口情况下,窗口调用show会显示父窗口中,如果没有父窗口,那么窗口调用show显示会是一个顶层窗口 2.按钮常用api 设置按钮显示文字可以用...,以向右方向为x轴正方向,以向下方向为y轴正方向 对于嵌套窗口,其坐标是相对于父窗口来说 顶层窗口父窗口就是屏幕 4.对象树模型 QObject是Qt里边绝大部分类类 QObject...子对象就会加入到父对象一个成员变量叫children(孩子)list(列表)中 当父对象析构时候,这个列表中所有对象也会被析构 QWidget是能够屏幕显示一切组件父类 QWidget... Qt 中尽量构造时候就指定 parent 对象,并且大胆堆上创建 84AA8k-1678505328521)] QWidget是能够屏幕显示一切组件父类 QWidget继承自QObject

    1.2K30

    Qt编写自定义控件66-光晕时钟

    一、前言 在上一篇文章写了个高仿WIN10系统光晕日历,这次来绘制一个光晕时钟,也是某些网页看到效果,时分秒分别以进度条形式来绘制,而且这个进度条带有光晕效果,中间日期时间文字也是光晕效果...,整体看起来有点科幻感觉,本控件没有什么技术难点,如果真要有难点的话也就是如何产生这个光晕效果,使用painter绘制时候,设置画笔,可以设置brush,brush可以是各种渐变效果,这个就非常强大了...为了产生光晕效果,需要用到圆形渐变,对圆形渐变中不同位置设置透明度值来处理,时分秒对应进度可以自动计算出来,这个不难,比如直接用QTime可以获取对应时分秒,然后时钟和分钟除以60,秒钟除以1000...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.13任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...Qt入门书籍推荐霍亚飞《Qt Creator快速入门》《Qt5编程入门》,Qt进阶书籍推荐官方《C++ GUI Qt4编程》。

    1.5K40

    Python学习总结(1)—turtle海龟作图

    dot(size=None, *color) 画点 海龟所处位置画点 size是点大小,为整型;缺省为默认值 *color是点颜色英文单词,为字符串类型 stamp() 印章 海龟当前位置绘制一个海龟形状...如果 fun 值为 None,则移除现有的绑定 fun – 一个函数,调用时将传入两个参数表示画布上点击坐标。...add=None) 当鼠标释放 将 fun 指定函数绑定到在此海龟释放鼠标按键事件。...如果 fun 值为 None,则移除现有的绑定。 ondrag(fun, btn=1, add=None) 当鼠标拖动 将 fun 指定函数绑定到在此海龟移动鼠标事件。...如果 fun 值为 None,则移除现有的绑定 注: 海龟移动鼠标事件之前应先发生在此海龟上点击鼠标事件 _ turtle.ondrag(turtle.goto)在此之后点击拖动海龟可在屏幕上手绘线条

    1.6K10

    真正干货!100多条Qt开发经验,解决你开发各种问题!

    - 方法三:重新实现QWidgetpaintEvent函数时,使用QStylePainter绘制。...Qt打包发布,有很多办法,Qt5以后提供了打包工具windeployqt(linux为linuxdeployqt,mac为macdeployqt)可以很方便将应用程序打包,使用下来发现也不是万能...绘制无背景颜色只有边框颜色圆形时候,可以用绘制360度圆弧替代,效果完全一致。...,改成qintptr有个好处,32位上自动是quint32而在64位上自动是quint64,如果在Qt5中继续写参数是int则在32位没有问题在64位才有问题,所以为了兼容Qt4和Qt5,必须按照不一样参数写...|32/64位系统编译arm系统运行| |amd64|64位系统编译64位系统运行| |amd64_x86|64位系统编译32/64位系统运行| |amd64_arm|64位系统编译

    4.1K11

    python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例

    PyQt5图片显示控件QPixmap介绍 QPixmap类用于绘图设备图像显示,它可以作为一个QPainterDevice对象,也可以加载到一个控件中,通常是标签或者按钮,用于标签或按钮显示图像...X11, Mac 以及 Symbian平台上。 QImage: 因为它是存储客户端,往QImage绘图比较快,但显示它则比较慢。...QPixmap: 具体实现是依赖于系统,它是存储服务器端,往QPixmap绘图比较慢,但显示它则比较快。...用处分工不同 QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计。...QPixmap绘制效果是最好。 总结: 对于显示小图片时,可以用QPixmap进行加载,绘画图片。

    6.8K42

    Qt编写数据可视化大屏界面电子看板3-新建布局

    ,这样方便用户理解,Qt5以来对乱码问题解决就比较好了,不像Qt4时代稍不留神就乱码了,Qt5只要保证源码文件utf-8编码基本就很少遇到乱码问题了。...以便任何人都可以及时掌握管理现状和必要情报,从而能够快速制定实施应对措施。因此,管理看板是发现问题、解决问题非常有效且直观手段,是优秀现场管理必不可少工具之一。...如果发现布局拖动乱了,可以直接鼠标右键选择恢复布局即可,保存布局以前。 中间地图模块鼠标右键可以弹出菜单,切换布局和配色方案等。...模块标题栏右键可以弹出默认dock菜单,用来显示和隐藏各模块。 软件关闭过程中会自动保存布局,下次启动以后自动应用。...如果是XP系统请先执行fixff.cmd,用来修复ffmpegXP不可用BUG。

    1K60

    Linux平台x86_64|aarch64架构如何实现轻量级RTSP服务

    ​技术背景我们在做Linux平台x86_64架构或aarch64架构推送模块时候,有公司提出这样技术需求,希望Linux平台,实现轻量级RTSP服务,实现对摄像头或屏幕对外RTSP拉流,同步到大屏上去...,做基础编码等参数配置:NT_HANDLE open_config_instance(NT_SmartPublisherSDKAPI* push_api, int dst_fps) {NT_INT32...(char))){x_win_list.push_back(wid);fprintf(stdout, "wid:%llu, title:%s\n", wid, title);}}fprintf(stdout...,目前实现功能如下:音频编码:AAC; 视频编码:H.264; 协议:RTSP; [音视频]支持纯音频/纯视频/音视频推送;支持X11屏幕采集; 支持部分V4L2摄像头设备采集;[屏幕/V4L2摄像头...配合我们RTSP播放器,可轻松实现150-400ms低延迟体验,感兴趣开发者,可以单独跟我沟通。

    15010

    Qt编写控件属性设计器2-拖曳控件

    一、前言 一篇文章把插件加载好了,并且把插件中所有控件都显示到了列表框中,这次要做就是实现拖曳控件功能,用户选择一个控件拖曳到画布,松开,松开位置处自动实例化该控件,这个需要用到dropEvent...和dragEnterEvent事件,重新实现这两个事件,对拖曳对象进行过滤调用函数实例化该控件,实例化该控件同时实例化控件跟随控件以便拉伸调整大小和位置。...所有控件属性自动提取显示右侧属性栏,包括枚举值下拉框等。 支持手动选择插件文件,外部导入插件文件。 可以将当前画布所有控件配置信息导出到xml文件。...全部纯Qt编写,QWidget+QPainter绘制,支持Qt4.6到Qt5.12任何Qt版本,支持mingw、msvc、gcc等编译器,支持任意操作系统比如windows+linux+mac+嵌入式...Qt入门书籍推荐霍亚飞《Qt Creator快速入门》《Qt5编程入门》,Qt进阶书籍推荐官方《C++ GUI Qt4编程》。

    1.3K00
    领券