- 博客(144)
- 收藏
- 关注
原创 开源项目:Qt封装自绘控件库
GuitHub地址:https://github.com/ArmstrongOne/Qt-CustomControls环境:用VS2015以及qt-vs-tools-msvc2015-2.0.0插件以上版本直接编译运行--个人用Qt封装了下一些还算好看的控件--接口都还算完备--基本上一个控件一个头文件加一个实现文件。--分了一些类,现在有进度条,滑动条,仪表盘,统计图,动画,按钮,还有一些还不错的软件页面--现在量不是很多,之后遇到好看的的还会实现再添加下面贴一些图:
2020-08-17 16:43:52 2927 2
原创 Muduo(C++11版本) 源码剖析(一)———总体架构
前言: 目前虽然一直是C++/Qt偏客户端的方向,但是研究了一段时间c++高性能服务器的一些架构设计,正好学习了一款flamingo这一款开源即时通讯软件,里面的网络层是用c++11改写的原来boost版的muduo,索性就写几篇博客分析下muduo这款网络库的源码,其实已经有不少人分析过该库,我在这里仅仅谈我的个人对该库设计、用法的一些理解 ,不对或者不准确的地方还请指出,有一些地方会直接引用陈硕老师的《c++linux多线程服务端编程》的原图或者原话。涉及到的关键类: ..
2020-08-13 15:27:24 3549 1
转载 (搬运learnopengl)(OpenGL学习)Chapter.2.4-入门-着色器
可以看到,uniform对于设置一个在渲染迭代中会改变的属性是一个非常有用的工具,它也是一个在程序和着色器间数据交互的很好工具,但假如我们打算为每个顶点设置一个颜色的时候该怎么办?函数能够查询一个unform的位置值并设置它的值。在着色器主题的最后,我们会写一个类来让我们的生活轻松一点,它可以从硬盘读取着色器,然后编译并链接它们,并对它们进行错误检测,这就变得很好用了。在我们的例子里,我们希望分别设定uniform的4个float值,所以我们通过glUniform4f传递我们的数据(注意,我们也可以使用。
2024-07-17 11:00:59 48
转载 (搬运learnopengl)(OpenGL学习)Chapter.2.3-入门-你好,三角形
3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。而顶点数据是用顶点属性(Vertex Attribute)表示的,它可以包含任何我们想用的数据,但是简单起见,我们还是假定每个顶点只由一个3D位置(译注1)和一些颜色值组成的吧。这样的好处就是,当配置顶点属性指针时,你只需要将那些调用执行一次,之后再绘制物体的时候只需要绑定相应的VAO就行了。
2024-06-21 10:03:07 57
转载 (搬运learnopengl)(OpenGL学习)Chapter.2.3-入门-你好,窗口
当渲染循环结束后我们需要正确释放/删除之前的分配的所有资源。我们可以在main函数的最后调用glfwTerminate函数来完成。return 0;这样便能清理所有的资源并正确地退出应用程序。现在你可以尝试编译并运行你的应用程序了,如果没做错的话,你将会看到如下的输出:如果你看见了一个非常无聊的黑色窗口,那么就对了!如果你没得到正确的结果,或者你不知道怎么把所有东西放到一起,请到这里参考源代码。如果程序编译有问题,请先检查连接器选项是否正确,IDE中是否导入了正确的目录(前面教程解释过)。
2024-06-21 09:58:57 44
转载 (搬运learnopengl)(OpenGL学习)Chapter.2.2-入门-创建窗口
从源代码编译库可以保证生成的库完全适合你的操作系统和CPU的,而预编译的二进制文件则并非总是提供(有时候,即便提供了预编译的二进制文件,也可能不适用于您的系统)。如果你用的不是Visual Studio(或者用的是它的旧版本)请不要担心,大多数IDE上的操作都是类似的。注意,由于作者对教程做出了更新,之前本节使用的是GLEW库,但现在改为了使用GLAD库,关于GLEW配置的部分现在已经被修改,但我仍决定将这部分教程保留起来,放到一个历史存档中,如果有需要的话可以到。(别忘了给你的项目起一个合适的名字)。
2024-06-20 11:14:50 51
转载 (搬运learnopengl)(OpenGL学习)Chapter.2.1-入门-OpenGL
比如说我们有一些作为3D模型数据(一栋房子或一个人物)的容器对象,在我们想绘制其中任何一个模型的时候,只需绑定一个包含对应模型数据的对象就可以了(当然,我们需要先创建并设置对象的选项)。实际的OpenGL库的开发者通常是显卡的生产商。在更新前的教程中一直使用的都是OpenGL的基本类型,但由于作者觉得在本教程系列中并没有一个必须使用它们的原因,所有的类型都改为了自带类型。现代函数要求使用者真正理解OpenGL和图形编程,它有一些难度,然而提供了更多的灵活性,更高的效率,更重要的是可以更深入的理解图形编程。
2024-06-20 11:06:12 61
转载 (搬运learnopengl)(OpenGL学习)Chapter.1-简介
你到这里来可能是想学习计算机图形的工作原理,并且自己做一些很酷的东西。自己做东西是非常有趣的,同样也能给你带来对图形编程的兴趣。然而,在你开始学习旅程之前,有这么几点注意事项。
2024-06-20 10:58:18 35
原创 C++接口类使用Qt的虚信号
可以看到在虚类中声明了两个public的虚函数,子类中声明了同样的两个信号,这样可以实现信号和槽的外部连接。需要注意的是连接的时候,需要将对象指针转换成QObject*,其次是上面使用的Qt4的连接方式SIGNAL/SLOT,如果使用Qt5的方式 &Class::function 会报错,如果要使用lambanda的方式需要再想办法了。项目中封装库的对外接口类,包括Qt的插件框架,希望接口类是一个比较干净的类,不需要继承自Object,与Qt无关系,但又需要它的子类使用Qt的信号和槽机制,则可以如下处理。
2023-12-19 10:12:20 283
原创 C++软件在Win平台运行总结
1.需要安装运行库:无论是exe还是动态库用的哪种平台工具集(visual2010-visual2019)进行编译,需要安装对应的运行时库vc_redist.x64.exe/vc_redist.x86.exe。比如Exe用的是VisualStdio2010工具集编译,其中链接的一个库是VisualStdio2019编译,则是安装2010/2019运行时库都要安装。出现过安装了运行时但是缺少如下库,之前了解过是windows的一些用于转发的dll库,但是具体原理还未知,还需要进一步了解。
2023-12-05 10:58:43 222
原创 C++接口传递的简单总结
SDK新增加了一个接口,参数使用std::vector&,传给dll函数中填充数值,然后应用层拿到这个vector出现了崩溃 越界等问题,调了很久,之前知道这个问题,没有想起来,耽误了许多时间。应用层和SDK传递数据数组目前的手段还是先从sdk获取数据大小,然后数据new在应用层,sdk层对这段内存赋值,这样没有问题。之后考虑使用协议来传递数据,比如pb,json等。一方面解耦,一方面解决跨模块传递CRT导致的各种问题。
2023-11-08 11:55:47 177
原创 c++项目排序问题
2.以一定排序规则排序指定范围内的元素,但是算法不具有稳定性,如果元素的值是相同的话不保证它们的相对顺序保持不变。我们需要注意的是sort()采用的是优化版本的快速排序,在最后阶段采用直接插入排序。3.平均 O(N·log(N)) 次比较,其中 N =1.相等要返回false,不然会报错无效的数值。1.std::sort排序。
2023-06-28 11:09:46 193
转载 (Qt)QtCreator套件编译器选择
amd64_x86:编译器为amd64版本,输出文件为x86。x86_amd64:编译器为x86版本,输出文件为amd64。amd64:编译器为amd64版本,输出文件为amd64。x86:编译器为x86版本,输出文件为x86。
2023-05-23 11:54:49 1067
原创 (Qt项视图Demo)ListWidget简单使用搜索记录窗体
使用的话可以和给外部QLineEdit搭配,接受sigSelectRecord即可。可自己复用自己改造的ListWidget使用demo。其他类似的均可由这个基础demo改造。
2023-02-23 16:55:09 571
原创 (Qt) Qt项目的插件化
笔者之前的项目所采用的是动态库的方式让程序运行时加载DLL,最近接触的几个项目均用插件化的方式加载程序所需要的模块。一开始我也纳闷,用我浅薄的理解Qt的插件化本质还是加载的dll,只不过是可以在运行期间进行dll的加载,无需加载lib,那么这样和存粹用动态库加载区别应该不大,一些动态库自带的好处比如解耦,灵活的好处,插件化也具备,那么这两个有什么不同呢,插件化是不是还能带来纯粹动态库没有的一些好处,下面就是我自己的角度想的好处。 插件支持热插拔使应用程序的使用更加灵活,软件只需要用到的时候加载插
2022-07-14 14:18:56 2144
原创 C++标准库关联容器之map,set基础用法
之前的文章介绍了顺序容器的一些用法:c++顺序容器用法这里主要记录下两个关联容器map和set的用法,同样会多引用C++ Primer中的原文这里只介绍前两个(map,set)的一些基础用法,后面几个可以根据业务情况自己学习用法。map是键值对,set只有键关键词唯一 关键词有序或者不保证有序插入/修改:Set声明-定义-初始化:插入:查询:删除:...
2022-07-07 13:57:24 442
原创 (Qt)使用QCommandLineParser进行程序的命令行解析
在开发过程中,由于需要,有时候要对程序中的命令行进行使用,比如最近的开发任务需要用外部exe启动我们的软件,启动的时候传入一些必要的命令行参数,使我们软件启动的时候根据这些参数进行一些必要的操作,这个时候就可以使用Qt自带的QCommandLineParser这个类。Qt中是用QCommandLineOption和QCommandLineParser这两个类配合进行应用的解析。下面就直接贴出一个例子的简单使用,方便大家理解,其中涉及到一些东西也很多,长,短命令,以及多参,从最基础的用法入手,后面自己学习
2022-05-10 15:47:22 2033
原创 (Qt)记一次Qt安装器卡死的问题
今天想补充安装QChart,熟练的打开Qt安装目录下的安装器,发现点击安装器界面老是卡死,一脸懵逼,又把Qt卸载重装,一样的,后来百度发现是有道词典导致Qt安装器卡死,退出,就可以了。大写的服,如果没刷到那文章,我还不知道要耽误多少时间。开发过程中总会碰到各种问题。...
2022-02-10 12:41:59 1913 5
原创 (Qt)QJson解析和生成
例子分析:代码:Json文件{ "SkinColorConfig": { "text_color_type_1": "224,231,250,255", "text_color_type_2": "162, 171, 195,255", "m_bubblewin_border_color": "48, 54, 66, 255", "m_bubblewin_line_color":"54, 63, 82, 255" }}解析代码: //将一
2021-12-13 14:29:27 60
原创 (Qt项视图Demo)封装下链式结构(QListView)的MVC(MVD)用法
对于一些数据量小的列表我们使用QListWidget往往能满足开发的需求,但是对于大数据量的展示来说(几十万,上百万)来说的话,全部加载是一个不是很合适的方法。因此我们使用MVC,这里可能应该叫MVD(model,view,delegation)。这样做个人认为有两个好处:1.效率问题,view和delegation配合只负责从model中取显示需要的数据,因此带来高效。2.model的数据可以由不同view来显示。这里的话封装下通用QListView的通用方法(Tree和Table之后做),去
2021-11-24 10:34:46 1999
转载 (Qt)Qt之show()、hide()、close()、exec()、open()比较
来源:Qt 之 show,hide,setVisible,setHidden,close 等小结_1+1=10-CSDN博客 Qt之show()、hide()、close()、exec()、open()比较_毅修的专栏-CSDN博客(1)QWidget 的show()、hide()、setVisible()、setHidden() 这4个函数让人看得眼花缭乱,但是打开源代码一看,原来最终调用的只是一个函数:setVisible(bool visible)。下面是几个函数的源代码。...
2021-11-12 11:23:34 5300
原创 (Qt)重写QApplication的Notify()进行一些事件的提前处理
软件中有一些窗口通常需要统一管理,这个时候可以利用重写Application来用Notify进行统一管理,比如菜单的一些,切换应用程序整体消失的属性。#include "CBillfishApplication.h"#include "CAppSingleton.h"#include <QMouseEvent>#include <QWidget>#include <QEvent>#include <QCursor>#include <Q
2021-07-29 13:44:09 1759
原创 (Qt)正确清晰的显示SVG图案到Label中显示以及Painter画清晰的SVG
ui肯定会给一个svg图案给你,可能很小,但是由于是svg你必须要在软件中显示清晰,无论多大。下面我就给一个实际的例子。 //文件夹设置固定默认图片 //取文件夹图片 QString folder_icon_path = GetSkinResourceAbsolutePath("tree_folder_blue_close.svg"); QSvgRenderer svg_remder (folder_icon_path); ...
2021-07-08 13:30:51 5741 2
原创 更新Win系统中断exe显示映像丢失错误
2021.5.25中午重装系统升级中,强制关机,导致系统软件错误,显示映像丢失。试了如下三个方法:1.向注册表注册所有系统文件for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1该情况无效。2.扫描sfc /scannowWindows操作系统的CMD命令有多种,sfc /scannow是使用率较高的一直,用于扫描和校对当前系统文件,修复缺失/异常的系统文件。如果检测到受保护的系统文件被不正确的文件覆盖会从dllca.
2021-05-25 16:01:15 275
原创 (QT)托盘客户端的处理方案
主要用到了Qt-QSystemTrayIcon这个类//头文件QSystemTrayIcon* m_lpTrayIco;//cpp QMenu* m = new CTrayMenu/*new QMenu*/; //绑定菜单 QAction* s = new QAction(QString::fromWCharArray(L"显示/隐藏"), this); QAction* a = new QAction(QString::fromWCharArray(L"关
2021-04-12 10:45:14 298
原创 Windows获取电脑的硬盘属性(转速,类型(HDD,SSD))
获取电脑的硬盘属性(转速,类型(HDD,SSD))参考的是老外技术论坛网站:https://stackoverflow.com/questions/23363115/detecting-ssd-in-windows头文件.h#pragma once#include <QString>#include <windows.h>#include <string>//==============判断磁盘格式--获取到的是磁盘格式void BuryPoin
2020-12-15 11:55:00 1900 1
原创 Qt-DPI测试
首先,DPI问题基本不和屏幕分辨率有关,分辨率再大4k,8k只要在1080p下开发,拿到大屏只不过会看上去小而已,不存在其他问题。DPI问题只和系统显示设置里的更改文本应用等项目大小有关,一般说的程序DPI适应,是适应这个东西。然后一般做法有两个一。一个是我看斗鱼软件那种适应系统DPI那样,DPI设的再高软件看上去没变化那种,稍微模糊。 qrc加个资源文件 qt.conf,具体百度吧。二。另一个比如Eager,DPI设高软件要等比例放大,显得好看这种。我们项目决定用这种。所有...
2020-09-26 17:22:05 719 1
原创 Qt弹窗的合理解决方案
大型项目肯定是有多种弹窗类型,无论是dialog还是原始的widget。我们在需要的时候显示,然后在进行他的其他任何操作的时候(就是点弹窗外的其他区域)将他关闭,这里有两种方法。一. popup设置窗口属性 setWindowFlags(Qt::Popup);二.窗口激活属性WindowDeactivate...
2020-09-26 17:08:42 1316
转载 (转载)Qt适应dpi的解决方案
转载自:https://blog.csdn.net/startl/article/details/105862817QT这个地方真应该好好规整一下,规划设计的太乱了,开发者真的无所适从先说最终解决方案:使用资源qrc里添加,qt/etc/qt.conf,qt.conf中WindowsArguments=dpiawareness=0好处就是直接让windows来控制,和多数程序保持一致。如果采用QT本身的方案,显示效果比较好,但是有不少坑:比如你在代码里写死了的一些间距,就会出问题,...
2020-09-26 08:48:19 2496
转载 (转载)vs下活动解决方案管理器中x86 x64 win32 anycpu arm的区别
https://blog.csdn.net/jigetage/article/details/80533910一 、x86、x64、Any CPU的区别参考文章点击打开链接1.简单的说,它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。以此类推,x64对应的则是64位的。而Any CPU则是取决于当前的操作系统,若操作系统是32位的,则编译出来的程序就是32位的,反之编译出来的就是64位程序。2.若你的启动项目,即主程序(编译出来是exe..
2020-09-22 16:47:07 1047
原创 VSCode配置C++环境
之前的环境都是在Win下的VisualStdio或者QtCreator作为ide开发c++,这次试了下VSCode,讲一下配置。跟着这篇博客设置了下https://www.cnblogs.com/bpf-1024/p/11597000.html,但是还有问题。一.下载VSCode,有官网。二.安装VSCode里插件 最左边扩展------>搜索c++--------------->安装三.下载MinGW ,并将bin写入环境变量,打开cmd 输入gcc -v测试下。...
2020-08-26 15:41:28 360
原创 Muduo(C++11版本) 源码剖析(六)———TcpServer和Acceptor设计
TcpServer主要功能是管理新的连接到来时创建的TcpConnection,是直接提供给用户使用的类,生命周期由用户控制。Acceptor是创建在TcpServer内部的指针,内部会有一个Channel来专门处理新连接到来事件,新连接到来会回调给TcpServer的newconnection来创建新连接,其实之前几期内部的机制都算是讲完了,如果能够理解,这两个类基本看下就能知道作用了。TcpServer成员变量: private: EventLoop*
2020-08-17 16:18:26 622
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人