- 博客(24)
- 收藏
- 关注
原创 Qt软件开发-摄像头检测使用软件V1.1
之前,在Qt软件开发-摄像头检测使用软件:https://blog.csdn.net/xuming2044/article/details/145054460?spm=1011.2415.3001.5331,实现了一个简单的本地摄像头检测和使用软件,由于功能比较单一,只能实现两个功能:1、本地摄像头的检测、2、摄像头的使用。于是在此基础上,有了Qt软件开发-摄像头检测使用软件V1.1。
2025-04-26 19:13:53
1020
原创 QT开发中,怎么理解和使用信号槽机制,以及对应的C++代码实现
在Qt框架中,信号槽(Signals & Slots)机制是实现对象间通信的核心机制,它比传统的回调函数更灵活、更安全。// 自定义信号Q_OBJECTsignals:// 自定义槽Q_OBJECT// 连接信号槽机制通过松耦合的方式实现了对象间通信,是Qt框架的核心设计思想之一。合理使用信号槽可以提升代码的可维护性和扩展性,尤其适合GUI事件驱动和异步任务场景。掌握其原理和细节后,能显著提升Qt开发效率。
2025-02-19 18:01:52
661
原创 Qt、C++软件开发之QVedioWidget控件:功能特性以及C++详细用法。
在Qt软件开发中,QVideoWidget 是一个用于显示视频内容的控件,是QWidget的子类。它是Qt Multimedia模块的一部分,提供了将视频输出渲染到窗口或屏幕上的功能。QVideoWidget 可以与 QMediaPlayer 或其他视频输出类结合使用,以在应用程序中播放和显示视频。如果你想要自定义 QVideoWidget 的外观,可以使用Qt的样式表机制,或者通过子类化 QVideoWidget 并重写其绘制方法来实现。
2025-02-08 23:02:02
652
原创 Qt、C++软件开发之list控件:listview和listwidget的区别以及C++详细用法。
在Qt软件开发中,QListView和QListWidget都是用于展示列表数据的组件,但它们在设计理念、功能特性以及使用方式上有着显著的区别。以下是对这两个组件的详细对比,包括它们的区别、功能以及C++中的详细用法。可以通过委托(QStyledItemDelegate等)来自定义列表项的渲染和编辑行为。支持多种视图模式(列表、图标、详细信息等),并可以动态切换。可以与其他Qt控件(如QComboBox、QTreeView等)结合使用,实现更复杂的界面布局。
2025-02-08 17:10:28
1549
原创 Qt、C++软件开发之table控件:tableview和tablewidget的区别以及C++详细用法。
在Qt框架中,QTableView和QTableWidget都是用于显示和编辑表格数据的控件,但它们在设计、使用方式和功能上存在一些重要的区别。如果需要更高级的自定义,如自定义单元格渲染、编辑委托等,可以创建自定义的委托类。如果你的应用程序需要处理复杂的数据源、大量的数据或需要高度定制的表格外观和交互,QTableView是更好的选择,譬如音视频播放器等。如果你的应用程序只需要简单的表格功能,且数据量不大,QTableWidget是一个快速简便的选择。在实际开发中,选择哪个控件取决于具体的应用需求。
2025-02-07 16:58:22
904
原创 Qt软件开发-网络辞典V1
该软件分为“服务端”和“客户端”,可支持多客户端连接该软件版本目前只支持中英单词互译,该软件存在的一些缺点:1、支持的语言只有中英两种,2、目前只支持单个词的查询,无法一次查询多个词或句子;3、客户端每次发出数据后服务端如果正在处理上一次查询任务,则新的查询请求可能会丢失,可用性不够强。有兴趣的同学可以针对自己的需求进行进一步优化。
2025-01-19 18:57:51
268
原创 Socket编程:C语言使用socket进行本地进程间通信、网络通信
本文详细介绍了Socket在C语言编程中,进行本地进程间通信、网络设备间通信的多种用法
2025-01-16 22:23:31
1804
原创 使用QT打包发布程序的过程中错误:make (e=2): The system cannot find the file specified.解决方法
因为路径变了导致找不到文件所以提示:make (e=2): The system cannot find the file specified,改为新路径后顺利编译通过。
2025-01-10 19:49:09
287
原创 Qt软件开发-摄像头检测使用软件
该程序主要用到QMediaCaptureSession类和QVideoWidget类,通过获取摄像头到会话中,然后将摄像头的画面实时显示到QVideoWidget对象中,实现了了一个简单的摄像头检测和使用软件。
2025-01-10 11:58:30
423
1
原创 Qt、C++软件开发之部件itemWidgets:QTreeWidget (展示树形数据结构的控件)的详细用法
如果你想要在树的每个项中展示自定义的控件(比如按钮、编辑框等),你可以使用 QStyledItemDelegate 类来自定义树项的显示和编辑行为。Q_OBJECTpublic:// 自定义绘制代码// 自定义编辑器// 在 QTreeWidget 中设置代理。
2025-01-03 09:28:53
577
原创 Qt、C++软件开发之代码布局:QFormLayout (创建表单样式的界面布局类)的详细用法
Form Layout 是一种特殊的布局,主要用于表单式的界面设计。标签部分:通常为一个文本标签,用于描述控件的作用。控件部分:通常为一个输入控件,如 QLineEdit、QComboBox、QCheckBox 等。Form Layout 自动调整控件大小,保持标签和控件的整齐对齐。这样可以将自定义布局(如水平布局)作为一行添加到 QFormLayout。
2025-01-03 08:40:44
1693
原创 Qt、C++软件开发之代码布局:QGridLayout(将控件按网格(行和列)进行排列的布局类)的详细用法
QGridLayout 是一个非常灵活且强大的布局管理器,适合用于需要精确定位控件的场景。它能够支持控件在多个方向上的对齐、控件的合并以及自定义的伸展策略等功能。通过这些功能,你可以设计出结构合理、外观整齐的界面。如果你有其他关于 QGridLayout 的问题,可以在评论区留言,一起交流!
2025-01-03 08:14:18
817
原创 Qt、C++软件开发之代码布局:QHBoxLayout (水平方向排列控件的布局类)的详细用法
在Qt中,QHBoxLayout 是一个水平布局管理器,它用于将控件(Widgets)按照从左到右的顺序排列。在使用Qt和C++进行GUI开发时,QHBoxLayout 是非常常用的布局管理器之一,它会自动处理控件的大小和位置,从而避免了手动设置控件的坐标和大小。
2025-01-03 07:56:17
349
原创 Qt、C++软件开发之代码布局:QVBoxLayout (垂直方向排列控件的布局类)的详细用法
通过以上内容,可以灵活使用 QVBoxLayout 创建复杂的垂直布局。
2025-01-03 07:29:31
380
原创 Qt软件开发-本地音乐播放器V2
在V1基础上增加的功能 1、UI排版:V2参照其它的主流音乐播放器重新进行了UI排版,看起来更加舒服; 2、引入了数据库:将添加的音乐数据保存到数据库,打开软件直接读取数据库就行,这样打开播放器就不用再每次添加音乐了,省去了每次要添加音乐的重复操作,免去了等待添加音乐的时间; 3、添加了线程处理:V1中添加音乐和播放音乐全部由主线程处理,这样就会导致添加音乐时无法播放音乐,如果一次性添加音频文件过多还会造成程序卡死; 4、改变播放进度:相比V1,V2可以通过拖动进度条改变当前的播放进度,然后从
2024-12-31 14:42:53
782
原创 Qt软件开发-本地音乐播放器V1
一款能够播放常见的音乐格式文件的音乐播放器,支持倍速、暂停、音量等功能,可以通过软件运行起来之后的添加文件来进行添加本地音乐文件。显示选中的音乐的基本信息如:歌名、歌手、文件大小、播放时长等。
2024-12-30 15:00:33
201
原创 条件变量的使用及注意事项
条件变量应用场景:生产者消费者问题,是线程同步的一种手段。必要性:为了实现等待某个资源,让线程休眠。提高运行效率int pthread_cond_wait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex);int pthread_cond_timedwait(pthread_cond_t *restrict cond,pthread_mutex_t *restrict mutex,const struct timesp
2024-08-03 14:41:29
217
原创 信号机制(信号概念、发送、定时器、信号捕捉、SIGCHLD)
SA_SIGINFO:使用 sa_sigaction 成员而不是 sa_handler 作为信号处理函数。SIG_IGN 代表忽略信号;sa_sigaction: 另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信息。sa_handler: 是一个函数指针,其含义与 signal 函数中的信号处理函数类似。act,oldact: 处理信号的新行为和旧的行为,是一个sigaction结构体。SA_NODEFER:使对信号的屏蔽无效,即在信号处理函数执行期间仍能发出这个信号。
2024-07-20 21:26:10
243
原创 进程间通信(无名管道、有名管道、信号、套接字、SystemV IPC(共享内存、消息队列、信号灯集))
对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。(2) 写端没有全部被关闭,read阻塞等待(不久的将来可能有数据递达,此时会让出cpu)
2024-07-16 17:41:05
658
原创 线程池概念和使用
我们平时创建一个线程,完成某一个任务,等待线程的退出。但当需要创建大量的线程时,假设T1为创建线程时间,T2为在线程任务执行时间,T3为线程销毁时间,当 T1+T3 > T2,这时候就不划算了,使用线程池可以降低频繁创建和销毁线程所带来的开销,任务处理时间比较短的时候这个好处非常显著。2 线程池工作线程,它是任务队列任务的消费者,等待新任务的信号。通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合。1 任务队列,存储需要处理的任务,由工作线程来处理这些任务。解决:检查函数的参数,添加对应的参数。
2024-07-15 22:29:34
238
原创 线程的互斥和同步,互斥锁和读写锁
在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的 pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。写者:写者使用写锁,如果当前没有读者,也没有其他写者,写者立即获得写锁;否则写者将等待,直到没有读者和写者。读写锁出于写锁状态时,所有试图对读写锁加锁的线程,不管是读者试图加读锁,还是写者试图加写锁,都会被阻塞。读写锁处于读锁状态时,有写者试图加写锁时,之后的其他线程的读锁请求会被阻塞,以避免写者长时间的不写锁。
2024-07-14 18:36:58
365
原创 线程的回收、取消和清理
编译错误:pjoin.c:13:5: error: unknown type name ‘pthead_t’pthead_t tid;PTHREAD_CANCEL_DEFERRED 等到取消点才取消。注意:线程的取消要有取消点才可以,不是说取消就取消,线程的取消点主要是阻塞的系统调用。错误类型:未知的类型pthead_t错误可能:1拼写错误,2对应的头文件没有包含。pthread_join是阻塞函数,如果回收的线程没有结束,则一直等待。错误类型:参数不匹配,期望的是char。
2024-07-14 17:09:03
827
原创 GDB调试多进程程序
on:只调试父进程或子进程的其中一个,(根据follow-fork-mode来决定),这是默认的模式off:父子进程都在gdb的控制之下,其中一个进程正常调试(根据follow-fork-mode来决定),另一个进程会被设置为暂停状态。set detach-on-fork on/off 设置GDB跟踪调试单个进程或多个。set follow-fork-mode child 设置GDB调试子进程。set follow-fork-mode parent设置GDB调试父进程。)切换GDB调试的进程。
2024-07-14 10:31:02
146
原创 使用C语言创建linux守护进程
因为守护进程一直在后台运行,其工作目录不能被卸载。需重新设定当前工作目录。此时已脱离终端,stdin / stdout / stderr无法再使用。此时子进程变成孤儿进程,被init进程收养。此时子进程成为新的会话组长。子进程脱离原先的终端。文件权限掩码设置为0,只影响当前进程。关闭所有从父进程继承的打开文件。5、关闭打开的文件描述符。3、更改当前工作目录。4、重设文件权限掩码。
2024-07-14 09:58:59
98
Qt软件开发1-本地音乐播放器V1
2024-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人