首页
学习
活动
专区
工具
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 多年都没有更改

2100

OSG嵌入QT简明总结

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

4.6K20

荔枝派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

38240

『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对话框窗口基类

32060

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.8K20

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

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

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.5K10

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

真正干货!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位系统编译

3.8K11

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

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

97160

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

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

6.5K42

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

QT学习笔记15绘图和绘图设备

大家好,又见面了,我是你们朋友全栈君。 1 QPainter Qt 绘图系统允许使用相同 API 屏幕和其它打印设备上进行绘制。...下图给出了这三个类之间层次结构: 上面的示意图告诉我们,Qt 绘图系统实际是,使用QPainterQPainterDevice上进行绘制,它们之间使用QPaintEngine进行通讯(也就是翻译...而paintEvent()函数则是绘制代码。首先,我们创建了一个QPainter对象,也就是说,每次运行paintEvent()函数时候,都会重建这个QPainter对象。...QPixmap使用底层平台绘制系统进行绘制,无法提供像素级别的操作,而QImage则是使用独立于硬件绘制系统,实际是自己绘制自己,因此提供了像素级别的操作,并且能够不同系统之上提供一个一致显示形式...QPicture是平台无关,因此它可以使用在多种设备之上,比如svg、pdf、ps、打印机或者屏幕。回忆下我们这里所说QPaintDevice,实际是说可以有QPainter绘制对象。

1.5K10

R语言基础绘图

R 支持常用绘图设备有以下几种: R 绘图设备 分类 R绘图设备 含义描述 屏幕显示 X11 X 窗口/图形界面窗口 文件设备 postscript ps 格式矢量图文件 pdf pdf 格式矢量图文件...png png 格式文件 jpeg jpg 格式位图文件 各种 R 绘图设备中,最常用X11 和 pdf,X11 绘图调试过程中非常方便,不用每次打开绘图文件,属于边绘图边查看方式...确定最终绘图方式生成图形文件进行保存时,推荐使用pdf 格式,因为 R 绘制 pdf 图形为矢量图, pdf 通用性较强,便于后期调整。绘制 pdf 图形函数为 pdf() 。...按是否能够自动创建新图形,R 绘图函数可以分为两类——高级绘图函数和低级绘图函数。高级绘图函数可以创建一个新图形,低级绘图函数是现有的图形添加元素。...R 绘图参数(graphical parameters)是控制绘图选项,可以使用默认值、可以绘制图形时进行修改,也可以使用 par 函数进行修改。

1.3K20

『Python动手学』PyQt5入门教程

w.setWindowTitle('Simple') 这里我们设置了我们窗口标题。这个标题显示标题栏中。 w.show() show()方法屏幕显示出widget。...一个widget对象在这里第一次被在内存中创建,并且之后屏幕显示。 sys.exit(app.exec_()) 最后,应用进入主循环。在这个地方,事件处理开始执行。...setGeometry()做了两件事:将窗口屏幕显示,设置了它尺寸。setGeometry()方法前两个参数定位了窗口x轴和y轴位置。...屏幕居中窗口 下面的脚本展示我们如何把窗口居中显示到桌面窗口。 #!...self.move(qr.topLeft()) 我们移动了应用窗口左上方点到qr矩形左上方点,因此居中显示我们屏幕

2.8K20

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低延迟体验,感兴趣开发者,可以单独跟我沟通。

9910
领券