V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xyzos
V2EX  ›  程序员

请教一个关于 Qt 与 SDL 配合使用的问题

  •  
  •   xyzos · Sep 9, 2024 · 1726 views
    This topic created in 606 days ago, the information mentioned may be changed or developed.

    我使用 Qt 创建了一个窗口,将窗口句柄传给了 SDL , 使用 SDL 在这个窗口句柄上渲染视频。目前遇到了问题,具体描述为:

    1. 如果是直接把这个窗口的句柄传给 SDL 渲染,初始启动渲染正常,SDL 中获取到的窗口的大小和渲染区域的大小也是正常的。分辨率大小改变时,SDL 中获取的窗口大小就变成了整个窗口大小(+菜单栏),导致渲染变成了整个窗口,将菜单栏覆盖了。
    2. 上面的渲染问题,可以通过在这个 Qt 的窗口中放一个 QLabel ,然后将 QLabel 的句柄传递给 SDL 进行渲染,这样就解决了上面的渲染问题。但是又会导致另一个问题,如果传递 QLabel 的句柄到 SDL ,SDL 会捕获不到键盘事件,而上面的方案 Qt 和 SDL 都能捕获到键盘事件,但是渲染会有问题。

    这个该怎么解决?或者有做过的朋友没,这个方案能不能走通。

    PS: 目前有两个解决方案备用

    1. 在 Qt 中捕获到键盘事件后,使用 SDL 的事件转换一下发送出去,但是需要在 Qt 的项目中额外依赖 SDL ,不太想用。
    2. 将图像传递出来,在 Qt 中进行单独渲染,不使用 SDL 了,这样就改变了原来的方案,所以也是备选。
    8 replies    2024-09-10 16:26:03 +08:00
    naiquan1007
        1
    naiquan1007  
       Sep 9, 2024
    话说,你都用 qt 了,为啥还要 SDL ?不要使用 SDL 了,Qt 也能渲染视频啊
    xyzos
        2
    xyzos  
    OP
       Sep 9, 2024
    @naiquan1007 简单说就是技术方案需要,Qt 太臃肿了,我想做一个 SDK ,不想让 SDK 依赖 Qt ,渲染是放在 SDK 内部的,就用 SDL 来做渲染了,其他的还涉及鼠标/键盘捕获等等。
    naiquan1007
        3
    naiquan1007  
       Sep 9, 2024
    @xyzos 我记得 SDL 也可以做窗口,你可以看看 freerdp3 ,他就是用 SDL 跨平台做窗口,虽然比较挫,但是毕竟远控,鼠标键盘,都有
    xyzos
        4
    xyzos  
    OP
       Sep 10, 2024
    @naiquan1007 好的好的,多谢🙏,我去看看
    mioktiar56
        5
    mioktiar56  
       Sep 10, 2024
    有第三方开发的 VLC Qt 控件,仅供参考 https://github.com/winsoft666/vlc-qt2
    valord577
        6
    valord577  
       Sep 10, 2024
    或许试试 libmpv ? https://github.com/mpv-player/mpv
    xyzos
        7
    xyzos  
    OP
       Sep 10, 2024
    @valord577 看了一下 这个和我用的方案是一样的,多谢,我去学习一下
    xyzos
        8
    xyzos  
    OP
       Sep 10, 2024
    @mioktiar56 多谢多谢 那么多一样方案的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4547 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 10:06 · PVG 18:06 · LAX 03:06 · JFK 06:06
    ♥ Do have faith in what you're doing.