qt工程中调用sdl的流程
配置 Qt 工程
在你的 Qt 工程中,需要对项目文件(.pro 文件)进行配置,以包含 SDL 库的路径和链接选项。
# Qt Project File (.pro)# 设置 SDL 库的路径
INCLUDEPATH += /path/to/SDL/include
LIBS += -L/path/to/SDL/lib -lSDL2
初始化 SDL
在 Qt 的主函数中,确保 SDL 库的初始化在 Qt 的 QApplication 对象创建之前进行:
#include <QApplication>
#include <SDL.h>int main(int argc, char *argv[])
{// 初始化 SDLif (SDL_Init(SDL_INIT_VIDEO) < 0) {// SDL 初始化失败,处理错误return -1;}// 创建 Qt 应用程序QApplication app(argc, argv);// 你的 Qt 代码// 退出 SDLSDL_Quit();return app.exec();
}
调用 SDL
#include <QApplication>
#include <QWidget>
#include <SDL.h>class SDLWidget : public QWidget
{
public:SDLWidget(QWidget *parent = nullptr) : QWidget(parent) {// 初始化 SDLif (SDL_Init(SDL_INIT_VIDEO) < 0) {qWarning("SDL_Init Error: %s", SDL_GetError());return;}// 创建 SDL 窗口sdlWindow = SDL_CreateWindowFrom((void*)this->winId());if (!sdlWindow) {qWarning("SDL_CreateWindowFrom Error: %s", SDL_GetError());return;}// 创建 SDL 渲染器sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, SDL_RENDERER_ACCELERATED);if (!sdlRenderer) {qWarning("SDL_CreateRenderer Error: %s", SDL_GetError());return;}// 渲染示例SDL_SetRenderDrawColor(sdlRenderer, 255, 0, 0, 255);SDL_RenderClear(sdlRenderer);SDL_RenderPresent(sdlRenderer);}~SDLWidget() {// 清理 SDL 资源if (sdlRenderer) {SDL_DestroyRenderer(sdlRenderer);}if (sdlWindow) {SDL_DestroyWindow(sdlWindow);}SDL_Quit();}private:SDL_Window* sdlWindow;SDL_Renderer* sdlRenderer;
};int main(int argc, char *argv[])
{QApplication app(argc, argv);SDLWidget widget;widget.show();return app.exec();
}
处理 SDL 和 Qt 事件
SDL 和 Qt 的事件处理机制是分开的,需要处理两者之间的交互。例如,如果你在 SDL 中处理输入事件。
#include <QApplication>
#include <QWidget>
#include <SDL.h>class SDLWidget : public QWidget
{
public:SDLWidget(QWidget *parent = nullptr) : QWidget(parent) {// 初始化 SDLif (SDL_Init(SDL_INIT_VIDEO) < 0) {qWarning("SDL_Init Error: %s", SDL_GetError());return;}// 创建 SDL 窗口sdlWindow = SDL_CreateWindowFrom((void*)this->winId());if (!sdlWindow) {qWarning("SDL_CreateWindowFrom Error: %s", SDL_GetError());return;}// 创建 SDL 渲染器sdlRenderer = SDL_CreateRenderer(sdlWindow, -1, SDL_RENDERER_ACCELERATED);if (!sdlRenderer) {qWarning("SDL_CreateRenderer Error: %s", SDL_GetError());return;}}~SDLWidget() {if (sdlRenderer) {SDL_DestroyRenderer(sdlRenderer);}if (sdlWindow) {SDL_DestroyWindow(sdlWindow);}SDL_Quit();}protected:void paintEvent(QPaintEvent *event) override {// 在 Qt 的 paintEvent 中调用 SDL 渲染SDL_SetRenderDrawColor(sdlRenderer, 0, 255, 0, 255);SDL_RenderClear(sdlRenderer);SDL_RenderPresent(sdlRenderer);}private:SDL_Window* sdlWindow;SDL_Renderer* sdlRenderer;
};int main(int argc, char *argv[])
{QApplication app(argc, argv);SDLWidget widget;widget.show();return app.exec();
}
相关文章:
qt工程中调用sdl的流程
配置 Qt 工程 在你的 Qt 工程中,需要对项目文件(.pro 文件)进行配置,以包含 SDL 库的路径和链接选项。 # Qt Project File (.pro)# 设置 SDL 库的路径 INCLUDEPATH /path/to/SDL/include LIBS -L/path/to/SDL/lib -lSDL2初始化…...
ECMAScript性能优化技巧与陷阱
大家好,我是程序员小羊! 前言 ECMAScript,即JavaScript,是一种广泛应用于Web开发中的脚本语言。随着现代Web应用的复杂度日益增加,如何优化JavaScript的性能变得至关重要。性能优化不仅能提高应用的响应速度&#x…...
c++实现B树(上)
哈喽啊!好久不见,甚是想念!失踪人口要回归了,时隔一个多月小吉我终于要更新blog了🎉。在停更的一个多月中,小吉也有在好好学习提升自己,立志给大家呈现好文章。 现在让我们进入正题吧…...
【机器学习】深度强化学习–RL的基本概念、经典场景以及算法分类
引言 深度强化学习(Deep Reinforcement Learning, DRL)是机器学习的一个分支,它结合了深度学习(Deep Learning)和强化学习(Reinforcement Learning, RL)的技术 文章目录 引言一、深度强化学习–…...
【git】将本地文件上传到github
安装git 选择一个文件夹作为git仓库,cd到文件夹输入 git init文件夹出现.git文件夹,该文件夹默认为隐藏文件夹,设置为不隐藏 在cmd中输入 ssh-keygen -t rsa -C "xxxxxx.com"该邮箱为github邮箱,然后一路enter出现以…...
安卓应用开发学习:手机摇一摇功能应用尝试--摇骰子和摇红包
一、引言 前几天,我发布的日志《安卓应用开发学习:查看手机传感器信息》记录了如何查看手机传感器的信息,通过上述的方法,可以看到我的OPPO手机支持19种传感器。本篇日志就记录一下常见的加速度传感器的典型应用——“摇一摇”功…...
HTML中的<fieldset>标签元素框的使用
HTML 提供的 <fieldset> 标签用于在表单中分组相关元素。 <fieldset> 标签会在相关元素周围绘制一个框。 <legend> 标签为 fieldset 元素定义标题。 语法如下: <fieldset><legend>标题</legend><!-- 元素内容... -->…...
Linux驱动入门实验班——SR501红外模块驱动(附百问网视频链接)
目录 一、工作方式 二、接口图 三、编写思路 1.构造file_operations结构体 2.实现read函数 3.编写入口函数 4.编写中断处理函数 5.编写出口函数 6.声明出入口函数以及协议 四、源码 五、课程链接 一、工作方式 SR501人体红外感应模块有两种工作模式: …...
windows C++- Com技术简介(上)
在介绍C和winrt与COM组件技术的关系之前,有必要介绍一下com组件技术,这项技术比较古老,但是它一直作为windows的基石存在。COM 是一类独立于平台且面向对象的分布式系统,用于创建可交互的二进制软件组件。 COM 技术是 Microsoft O…...
Jenkins持续集成工具学习
一、从装修厨房看项目开发效率优化 二、持续集成工具 三、JavaEE项目部署方式对比 四、JenkinsSVN持续集成环境搭建 五、JenkinsGitHub持续集成环境搭建...
Redis:查询是否包含某个字符/字符串之三
上一篇:Redis:查询是否包含某个字符/字符串之二-CSDN博客 摘要: 遍历key,在跟进value的类型遍历value是否包含指定字符串 search_strings ,这里使用redis-py库,默认只能处理utf-8编码,如果存在…...
【Redis】数据类型详解及其应用场景
目录 Redis 常⻅数据类型预备知识基本全局命令小结 数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快 Redis 常⻅数据类型 Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维⾮常重要,同时掌握每种数据结构的常⻅…...
PARA-Drive:设计并行模型实现端到端自动驾驶
论文链接 https://openaccess.thecvf.com/content/CVPR2024/papers/Weng_PARA-Drive_Parallelized_Architecture_for_Real-time_Autonomous_Driving_CVPR_2024_paper.pdfhttps://openaccess.thecvf.com/content/CVPR2024/papers/Weng_PARA-Drive_Parallelized_Architecture_fo…...
vs2022 x64 C/C++和汇编混编 遇到的坑
vs2022 x64 C/C和汇编混编 遇到的坑 遇到的问题二、问题复现1.出错代码2.问题分析2.1 堆栈对齐问题 3.解决方案 总结奇数和偶数个寄存器的影响为什么 sub rsp, 8 对奇数个寄存器有用?结论 遇到的问题 0x00007FFFFAE24A29 (msvcp140.dll)处(位于 TestCompileConsole…...
PHP概述、环境搭建与基本语法讲解
目录 【学习目标、重难点知识】 什么是网站? 1. PHP 介绍 1.1. PHP 概述 1.1.1. PHP 是什么? 1.1.2. PHP 都能做什么? 1.2. PHP 环境搭建 1.2.1. PhpStudy 2. PHP 基本语法 2.1. PHP 语法入门 2.1.1. 第一个 PHP 程序 2.1.2. PHP …...
实现信创Linux麦克风摄像头录制(源码,银河麒麟、统信UOS)
随着信创国产化浪潮的来临,在国产操作系统上的应用开发的需求越来越多,其中一个就是需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音,将它们录制成一个mp4文件。那么这个要如何实现了? 一. 技术方案 要完成这些功能&a…...
深度学习9--目标检测
1.概念介绍 目标检测不仅可以检测数字,而且可以检测动物的种类、汽车的种类等。例如,自动驾驶车辆需要自动识别前方物体是车辆还是行人,需要自动识别道路两 旁的指示牌和前方的红绿灯颜色。对于自动检测的算法,有两个要求…...
第131天:内网安全-横向移动Kerberos 攻击SPN扫描WinRMWinRSRDP
案例一:域横向移动-RDP-明文&NTLM RDP利用的三种方式 1.直接在当前被控主机上进行远程连接 2.建立节点进行连接 3.端口转发,(访问当前主机的2222端口等于访问目标的3389) 第一种方式(动静太大) 直接利用被控主机进行远程连接…...
微信小程序的四种弹窗使用
在做小程序的过程中,弹窗也算是非常实用的功能了,这几天写的几个功能就用到了弹窗,也可能是初学者的问题,比较菜,想找一个可以带图片的自定义的弹窗,,这里简单介绍一下官方封装好的四个弹窗…...
我的第一个CUDA程序
MatAdd算法 实现两个矩阵对应元素相加 #include <stdio.h> #include <stdlib.h>// 矩阵加法函数 void MatAdd(int height, int width) {// 在主机内存中为 A、B 和 C 分配内存float* A (float*)malloc(height * width * sizeof(float));float* B (float*)malloc…...
写作压力小了!盘点2026年倾心之选的的降AIGC平台
轻松降低论文AI率在2026年已不再是天方夜谭。以下是2026年最炸裂、实测效果显著的降AIGC平台神器,覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景,帮你稳妥搞定毕业论文。 一、全流程王者:一站式搞定论文全链路 这类工具…...
缝纫机SW三维模型
在现代机械设计领域,缝纫机SW三维模型作为一种直观化的设计载体,正逐步成为设计过程中的基础工具。这类模型通过SolidWorks软件构建,将缝纫机的机械结构以数字化形式呈现,其核心价值在于为设计环节提供精准的可视化支持与功能验证…...
压缩强度试验机选的显示屏:在质量、价格、交期、服务上的适配优势
作为压缩强度试验机厂商的销售,我们在整机研发与生产中,显示屏是核心交互部件,直接影响设备的测试精度、操作体验与市场竞争力。结合多年行业经验与实际采购数据,恒域威显示屏在质量、价格、交期、服务四大核心维度,与…...
告别虚拟机!在物理机统信系统上部署FME Desktop的性能调优与存储空间规划指南
告别虚拟机!在物理机统信系统上部署FME Desktop的性能调优与存储空间规划指南 当GIS工程师需要在国产化环境中处理大规模空间数据时,物理机直接部署FME Desktop往往能获得比虚拟机更极致的性能表现。本文将深入探讨在统信UOS专业版物理机环境中ÿ…...
Fish-Speech 1.5应用案例:从播客配音到语音提醒,实战分享
Fish-Speech 1.5应用案例:从播客配音到语音提醒,实战分享 1. 项目概述与核心优势 Fish-Speech 1.5作为新一代文本转语音(TTS)系统,凭借其创新的DualAR架构在语音合成领域脱颖而出。这个开源项目通过双自回归Transformer设计,主T…...
SAP BTP新手避坑指南:从零开始创建Directory和Subaccount(附Region选择建议)
SAP BTP新手避坑指南:从零开始创建Directory和Subaccount(附Region选择建议) 第一次登录SAP BTP Cockpit时,面对Global Account、Directory、Subaccount的层级关系,很多新手会感到无从下手。这就像刚拿到一套乐高积木却…...
不止于画图:用@antv/g6-editor的Command系统打造可撤销/重做的智能流程设计器
超越基础绘图:利用antv/g6-editor构建企业级智能流程设计器 在当今快速发展的数字化时代,流程设计工具已成为企业数字化转型的核心组件。从简单的审批流程到复杂的业务编排,一个功能完备的流程设计器不仅能提升工作效率,更能确保…...
3个步骤打造全方位网络电台体验:foobox-cn配置指南
3个步骤打造全方位网络电台体验:foobox-cn配置指南 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 在数字音乐时代,如何高效管理和收听网络电台成为音乐爱好者的核心诉求。网络…...
流程越来越规范,但员工体验却越来越差
在很多企业推进 IT 管理规范化的过程中,流程建设往往是重点。 审批流程更加清晰,操作步骤更加标准,所有请求都可以通过系统统一管理。从管理角度来看,这是明显的进步。 流程可控、操作可追溯、风险也更容易管理。但从员工的实际体…...
Anthropic泄露新一代Claude Mythos 模型,具备网络安全漏洞检测优势
配置错误曝光新模型Anthropic PBC 内容管理系统的一处配置错误意外泄露了其正在测试的新型大语言模型 Claude Mythos。该公司周四向《财富》杂志证实,工程师已完成该模型的训练工作,目前正与早期客户进行试点测试。Anthropic 强调这是其"迄今为止构…...
