- 博客(700)
- 资源 (173)
- 收藏
- 关注
原创 ASIO网络调试助手之二:网络通信原理
网络调试助手是构建于网络套接字(Socket)组件之上的通信,而Socket本质上是对TCP/IP协议栈模型的封装。要熟练使用网络调试助手,就必须理解网络调试助手的通信原理,也就是要理解Socket以及TCP/IP协议的通信机制。
2024-09-08 22:18:31 1504
原创 C++之格式化日期时间为字符串(精确到毫秒)
C++11中提供了获取时间的chrono库,但是格式化显示太方便;C++11还提供了格式化时间iomanip库,通过其put_time方法可以格式化时间到秒,要显示毫秒,就需要自己处理了。
2024-09-08 19:59:12 397
原创 ASIO网络调试助手之一:简介
多年前,写过几篇的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。开发环境:Win10支持协议:独立的Asio()只包含了头文件,不依赖Boost,使用时只需定义ASIO_STANDALONE,并将Asio的目录添加到编译系统的include path。Asio现在支持C++11/14/17/20,源码里提供了各个C++版本的examples。
2024-09-08 18:41:58 163
转载 在纷繁多变的世界里茁壮成长:C++ 2006–2020(1)前言
最初,我设计 C++ 是为了回答这样的一个问题:如何直接操作硬件,同时又支持高效、高级的抽象?C++ 在 1980 年代仅仅是一个基于 C 和 Simula 语言功能的组合,在当时的计算机上作为系统编程的相对简单的解决方案,经过多年的发展,已经成长为一个远比当年更复杂和有效的工具,应用极其广泛。语言构件到硬件设施的直接映射零开销抽象这种组合是 C++ 区别于大多数语言的决定性特征。你不用的东西,你就不需要付出代价(“没有四处散落的赘肉”)。你使用的东西,你手工写代码也不会更好。
2024-07-14 19:59:43 113 2
原创 QTableView仿Excel表头排序和筛选
QTableview仿Excel表头排序和筛选:Excel功能非常强大。不仅支持内容排序和筛选,还支持颜色的排序和筛选,而且还支持设置多种过滤条件。本文只仿最常用的内容排序和内容单过滤条件的筛选
2024-07-14 19:14:42 398 1
原创 Effective C++笔记之二十一:One Definition Rule(ODR)
其实这是C++普遍存在的问题,在.h里面定义了一个class或者template等东东,这个头文件被include到多个cpp里,在这些cpp里原样展开,编译器在链接的时候,就会看到多个重复的定义,于是C++规定了ODR(One Definition Rule),简而言之:"看到这种重复定义的类,且这些类的代码又长得一模一样,编译器就随便选一个用就行了"。结合前面的现象,在Release模式下,内联真正发生,函数在调用处展开,所以能得到正确结果,尽管如此,由于内联的非强制性,代码这样写依然是有隐患的。
2024-07-10 00:26:43 1120 3
原创 QTreeView第一列自适应
通过setStretchLastSection(bool stretch)可以设置最后一列自适应,对于QTreeView,stretch默认为true。但有时候我们需要设置第一列自适应,比如文件浏览器,共有名称、大小和修改日期三列,大小和日期的宽度几乎是固定的,但名称却可长可短,此时我们希望在窗口大小变化时,第一列的宽度能自动缩放,第二列和第三列的宽度保存不变,而且要支持鼠标拖动调整列宽。
2024-06-30 07:25:01 364 2
原创 QListView、QTableView或QTreeView截取滚动区域(截长图)
QListView、QTableView或QTreeView截取滚动区域(截长图)本文以QTreeView为例,理论上继承自QAbstractScrollArea的类都支持本文所述的方法。
2024-06-23 17:59:03 279 1
原创 QTreeView双击任意列展开
重点是如何通过其他列的QModelIndex(假设为index),获取第一列的QModelIndex(假设为firstColumnIndex)。这里要注意index函数的第三个参数,第三个参数为父index,因为通过在tree中仅通过row和column无法确定目标index。下面是一个只有一列的tree,注释中为每行的row和column此时,model->index(0, 0);只会定位到node0,而不是node1-0、 node2-0或node2-1-0。
2024-06-23 14:52:46 421
原创 Qt基础之四十六:Qt界面中嵌入第三方程序的一点心得
本文主要讲解QWidget和QWindow的区别,以及如何在QWidget中嵌入第三方程序,并完美解决在QWidget中嵌入某些程序(比如Qt程序)时出现的白边问题。
2024-04-21 18:54:25 5042 14
原创 Qt之使用Qt内置图标
Qt内置图标封装在QStyle中,共七十多个图标,可以直接拿来用,能应付不少简单程序需求,不用自己去找图标并添加到资源文件了。下面是内置图标的枚举定义:QStyle提供了QIcon standardIcon()函数用于将内置图标转换为QIcon,同时提供了QPixmap standardPixmap()函数用于将内置图标转换为QPixmap。这两个函数的第一个参数都是上面贴出的枚举值。
2024-02-04 20:10:19 5983 97
原创 Qt6入门教程 15:QRadioButton
QRadioButton控件提供了一个带有文本标签的单选按钮。QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选按钮运行用户多选一,也就是说,在一组单选按钮中,每次只有一个能选中,如果用户选择了另一个,那么之前那个就会切换到未选中状态。单选按钮默认开启自动互斥(autoExclusive)。如果启用了自动互斥,属于同一个父部件的单选按钮的行为就和属于一个互斥按钮组的一样。
2024-02-02 01:33:31 3234 75
原创 Qt6入门教程 14:QToolButton
QToolButton可以提供一个弹出菜单,使用setMenu()来进行设置。通过setPopupMode()来设置菜单的弹出模式,缺省模式是DelayedPopupMode,这个特征通常用于网页浏览器的“后退”按钮,在按下按钮一段时间后,会弹出一个可以跳转的页面列表,默认延迟600毫秒,可以用QStyle::SH_ToolButton_PopupDelay进行调整。设置默认的QAction,如果有一个默认的action,该action则会定义QToolButton的文本、图标、TooTip等按钮的属性。
2024-01-31 08:17:17 2508 56
原创 Qt6入门教程 13:QPushButton
QPushButton是与QAbstractButton最接近的完全体按钮,它具备QAbstractButton的所有特性,并且支持设置菜单。
2024-01-29 00:48:42 2397 57
原创 Qt6入门教程 12:QAbstractButton
继承QAbstractButton,你至少得重新实现paintEvent()来绘制按钮的外形、文本和图标。通常也建议重新实现sizeHint(),某些情况下还得重新实现hitButton()(判断鼠标是否在按钮区域内)。下面的代码中集成QAbstractButton实现了MyButton,重新实现了paintEvent。在paintEvent中绘制文本颜色为白色,按钮底色为蓝色(鼠标按下或按钮选中时为红色)。代码中涉及的绘图和布局知识后面会单独介绍。
2024-01-28 12:51:47 2785 25
原创 Qt6入门教程 11:父子对象关系
Qt的对象模型提供了一种Qt对象之间的父子关系,当很多个对象都按一定次序建立起来这种父子关系的时候,就组织成了一颗树。当delete一个父对象的时候,Qt的对象模型机制保证了会自动的把它的所有子对象,以及孙对象,等等,全部delete,从而保证不会有内存泄漏的情况发生。在每一个Qt对象中,都有一个链表,这个链表保存有它所有子对象的指针。当创建一个新的Qt对象的时候,如果把另外一个Qt对象指定为这个对象的父对象,那么父对象就会在它的子对象链表中加入这个子对象的指针。
2024-01-25 22:07:38 2891 106
原创 Qt6入门教程 10:菜单栏、工具栏和状态栏
用Qt Creator新建基于QMainWindow的项目时,会自带菜单栏和状态栏。还是以前面的HelloWorld项目为例,通过Qt Designer和纯手写两种方式来添加或移除菜单栏、工具栏和状态栏。
2024-01-23 19:38:03 10610 30
原创 Qt6入门教程 9:QWidget、QMainWindow和QDialog
在用Qt Creator创建Qt Widgets项目时,会默认提供三种基类以供选择,它们分别是QWidget、QMainWIndow和QDialog,其中QMainWindow和QDialog的基类都是QWidget。
2024-01-21 23:35:15 4059 52
原创 Qt优秀开源项目之二十二:QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架
QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架
2024-01-19 08:49:38 4433 174
原创 Qt6入门教程 8:信号和槽机制(连接方式)
信号和槽机制(连接方式),即五个参数,共有五种,分别是Qt::AutoConnection、Qt::DirectConnection、Qt::DirectConnection、Qt::QueuedConnection、Qt::BlockingQueuedConnection和Qt::UniqueConnection
2024-01-17 20:30:44 3386 28
原创 Qt6入门教程 7:信号和槽机制(原理和优缺点)
信号和槽用于对象之间的通信。信号和槽机制是Qt的核心机制,也是Qt不同于其他框架的最突出的特征。Qt的元对象系统使信号和槽成为可能。本文将介绍其原理和优缺点。
2024-01-17 00:54:41 5023 17
原创 Qt6入门教程 6:Qt元对象系统
Qt中的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。元对象系统是基于以下3个条件的:●该类必须继承自QObject类;●必须在类的私有声明区声明Q_OBJECT宏(在类定义时,如果没有指定public或者private,则默认为private);●元对象编译器Meta-Object Compiler(moc),为QObject的子类实现元对象特性提供必要的代码。
2024-01-15 22:44:55 2866 29
原创 Qat++,轻量级开源C++ Web框架
Oat++是一个面向C++的现代Web框架官网地址:https://oatpp.iogithub地址:https://github.com/oatpp/oatppOat++具有如下特性:●随处运行Oat++没有任何依赖性,可以很容易地移植到各种支持的平台上(Linux、BSD、MacOS、OpenWRT、Windows)。●构建健壮的api使用Oat++的Simple-API,很容易就能构建出灵活而健壮的High-Level API。●高并发使用Oat++的Async-API,可以在单
2024-01-14 16:01:27 7535 150
原创 Qt6入门教程 5:添加资源和应用程序图标
Qt6入门教程 5:添加资源和应用程序图标。Qt资源系统是一种平台无关的机制,它将二进制文件存储到可执行文件中。当你的程序需要一系列文件(图标、翻译文件等等),而又不想这些文件有丢失的风险时,这种机制是非常给力的。前面创建了一个最简单的HelloWorld程序,略显简陋,下面给它添加标题栏图标和exe图标美化一下。
2024-01-14 15:59:20 3791 4
原创 C++程序员必备的面试技巧
平时可以搜集一些大厂的面试题或笔试题,放在CSDN博客上,没事就翻一下,个人觉得博客是比书更好的信息载体,比如说可以是彩色的图片、可以用动图等。●善于解决问题:在面试中,经常会遇到一些难题或者意想不到的问题,这时候要保持冷静,运用自己的知识和经验,找出解决问题的方法。●注意沟通技巧:在面试中,要注意和面试官的沟通技巧,要能够清晰地表达自己的思路和想法,同时也要认真听取面试官的意见和建议。●展示自己的实际经验:在面试中,可以通过举例说明自己曾经解决过的问题,或者展示自己的项目经验,来证明自己的实力和经验。
2024-01-12 00:10:18 1826 41
原创 Qt优秀开源项目之二十一:遇见QSkinny,一个轻量级Qt UI库
QSkinny库基于Qt Graphic View和Qt/Quick中少量的核心类。它提供了一组轻量级控件,可以在C++或QML中使用这些控件。QSkinny默认是启用硬件加速的,非常适合嵌入式设备,目前已经应用于大量汽车GUI的代码实现中。正如预期的那样,它有良好的启动性能和低内存占用率。QSkinny能在支持Qt/Quick的所有平台上运行,但目前只在Linux上得到了充分的测试。理论上支持所有Qt>=5.15的版本,推荐使用下面这三个版本:●Qt 5.15。
2024-01-11 23:33:58 7898 38
原创 QML实现的图片浏览器
QML实现的图片浏览器,功能包括:●悬浮工具栏●支持图片缩放、旋转、还原、旋转、拖动。●拖动图片时,释放鼠标图片会惯性滑动。●支持左右翻页查看文件夹中的图片。●支持保存图片至本地。
2024-01-11 02:01:50 3073 94
原创 Qt优秀开源项目之二十:RedPanda-CPP(小熊猫C++)
RedPanda-CPP(小熊猫C++)是跨平台、轻量易用的开源C/C++集成开发环境。和经典的Dev-C++ 5.11、新的Embarcadero Dev-C++ 6相比,无论在用户界面还是功能方面都有了很大的改进,在编译使用手感上已经可以和vs code相当,而运行占用的资源比后者要少得多。
2024-01-07 23:41:29 9882 37
原创 Qt6入门教程 4:Qt Creator常用技巧
在上一篇中,通过创建一个Qt项目,对Qt Creator已经有了比较直观的认识,本文将介绍它的一些常用技巧。Qt Creator启动后默认显示欢迎页面创建项目已经用过了,打开项目也很简单,就是打开一个已经存在的项目。项目历史记录非常有用,能快速打开最近使用过的项目。会话记录及管理不知道是干啥的,平时也用不到。Get Started、示例和教程一看就是些学习资料,不过都是英文的,搭配百度翻译自学效率更高哦。编译、运行及调试在上篇中已做介绍。
2024-01-07 18:15:29 4065 48
原创 Qt6入门教程 3:创建Hello World项目
程序员的职业生涯都是从一声问候开始的,我们的第一个Qt项目也是HelloWorld首先要说明的是,IDE不一定要用Qt Creator,用Visual Studio、VSCode、CLion也可以搭建Qt开发环境,它们都相应的插件来支持Qt开发。当然这些IDE没有高低贵贱之分,纯属个人习惯而已,我平时就是Qt Creator做开发的,而且作为Qt教程,不用官方提供的开发工具来演示,也不太合适啊。Qt 6.6.1自带的Qt Creator版本是12.0.1,打开后默认显示欢迎界面。
2024-01-06 19:28:48 3825 36
原创 Qt之QPainter绘制浪漫星空(快来许愿吧)
前几天发现几篇关于Python的博文,里面不是放烟花(Python烟花秀),就是献爱心(Python跳动的爱心)。以前学Python的时候的时候关于它的简介还是这样的:Python是一种高级编程语言,可以应用于爬虫、大数据、人工智能等方面。没想到Python在GUI方面也这么强大,好在Qt也不怂,,效果不逞多让。还有一篇,感觉不错,用QPainter复刻了一下,代码量和Python版本差不多。
2024-01-03 00:04:24 2756 15
原创 Qt基础之四十五:Qt国际化(I18N)
国际化的英文表述为Internationalization,通常简写为I18N(首尾字母加中间的字符数),这种奇葩的缩写方式,让我想起了NBA球星“字母哥”。下面看下Qt实现的动态语言切换效果。
2023-12-31 20:56:04 3974 13
原创 Qt基础之四十三:Qt智能指针(QPointer、QSharedPointer、QWeakPointer和QScopedPointer)
Qt智能指针(QPointer、QSharedPointer、QWeakPointer和QScopedPointer)
2023-12-30 00:10:13 3712 1
原创 Qt之自定义分页(翻页)控件
Qt之自定义分页(翻页)控件:当数据量较大时,分页显示是个不错的选择。这里用百家姓来演示分页效果,包括首页、上一页、下一页、尾页和跳转。
2023-12-27 22:17:04 2643 2
原创 Qt之判断一个点是否在多边形内部(射线法)
以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。其次,对多边形的顶点和射线相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略该点;最后,对于Q在多边形边上的情形,直接可以判断Q属于多边形。在图A中,射线与多边形的顶点相交,这时交点只能计算一个;在图B中,射线与多边形顶点的交点不应被计算;在图C中,射线与多边形的一条边重合,这条边应该被忽略不计。为了统一起见,射线可设定为水平向右,设点P的纵坐标与Q相同,P的横坐标为一大的整数,则可用QP代替射线。
2023-12-20 02:06:10 2987
20种数据结构和算法的C++实现
2017-11-17
Qt下用QSplitter实现滑动窗口
2017-11-16
QML实现图像处理,包括浮雕、锐化等效果
2017-11-14
WebRTC学习之四:最简单的语音聊天
2017-01-10
WebRTC学习之三:录音和播放
2016-12-26
Qt国际化(I18N)
2023-12-31
QHVlcPlayer.rar
2021-02-27
Qt+libVLC+QWidget渲染
2021-02-27
Qt调用libVLC实现播放器
2021-02-26
TestUI.rar
2021-02-09
QHOpenGLPlayer.rar
2021-01-10
基于Qt和SDL2播放PCM
2021-01-05
Qt5版NeHe OpenGL教程6-10
2018-05-17
Qt5版Nehe OpenGL教程1-5
2018-05-14
Qt调用OpenGL API实现彩色旋转立方体
2018-05-09
MyTcpClient
2018-03-16
Boost.Asio C++ Network Programming随书源码
2018-01-29
Boost.Asio C++ Network Programming(高清,带书签,可复制)
2018-01-29
Effective Modern C++ 英文原版(带书签)
2018-01-27
++i和i++哪个更高效
2023-02-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人