自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

转载 【无标题】

libevent使用

2022-09-18 14:56:29 151 2

原创 Qt中使用QFileDialog中选择文件夹/目录

设置选择模式 QFileDialog *fileDialog = new QFileDialog(this); fileDialog->setFileMode(QFileDialog::Directory); fileDialog->exec(); auto selectDir = fileDialog->selectedFiles(); if (selectDir.size()>0) { qDebug() << "Dir Path:" <&l

2021-03-27 09:09:38 9033

原创 QCustomPlot配置

安装在 https://www.qcustomplot.com/index.php/download 下载压缩包。qcustomplot.h和qcustomplot.cpp即为需要使用的文件。然后自己新建一个QWidget,要么继承自QCustomPlot这个类,要么做提升。备注 笔者使用环境是Windows 7 . 编译器是Vistual Studio 2015(构建套件是vs2013)部分类说明QCPGraph图表 通过调用 QCPGraph的setData设置绘图需要的数据 添加一.

2021-03-20 19:18:38 2391 2

原创 QML学习二

定位器QML中有一些放置元素对象的元素被称为定位器。在QML中提供了Row,Column,Grid和Flow四种定位器。ColumnColumn(列)元素将它的子对象通过顶部对齐的列方式进行排列。spacing属性用来设置每个元素之间的间隔大小(类似于QVBoxLayout)import QtQuick 2.12import QtQuick.Window 2.12Window{ id:testA visible:true width:100 heigh.

2021-03-20 11:07:51 389

原创 QML学习一

import QtQuick 2.12 //import 声明导入了一个指定的模块版本import QtQuick.Window 2.12Window{ id:testA visible:true//是否可见 height:200//高度 width:height * 2//宽度 title: qsTr("Hello World")//标题 property int times:15//自定义属性}语法使用// 可以进行单行注释 /**..

2021-03-16 21:52:47 269

原创 在QTableWidget中使用自定义委托组件

使用步骤1.自定义委托组件2.将委托设置给QTableWidget自定义委托组件1.继承自QItemDelegate类2.重写以下函数virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const//创建委托显示的控件 virtual voidsetEditorData(QWidget *editor.

2021-03-14 00:45:54 863

原创 使用Visual Studio 2015编译protobuf

下载源码笔者使用的protobuf版本是protobuf-cpp-3.0.0-alpha-1。下载链接https://github-production-release-asset-2e65be.s3.amazonaws.com/23357588/d783a8d4-7fcb-11e4-9260-069534592d92?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210125%2Fus-

2021-01-25 23:00:57 594

原创 关于使用Vistual Studio编写C/C++工程的一些总结

关于工程属性的一些基本配置右键点击项目。选择属性。即可打开工程的属性界面。输出目录的配置在项目属性界面–>配置属性–>常规–>输出目录。此目录可以指定exe或者dll等生成文件的目录。调试的配置在项目属性界面–>配置属性–>常规–>调试–>调试环境。此项会在程序启动运行的时候自动从此目录中加载程序所需要的.dll文件。这样的话就不用拷贝从其他目录拷贝dll到exe文件所在目录了。省事了很多包含目录和库目录的配置包含目录用来配置头文件所在的目录。

2020-12-27 19:01:42 286 1

原创 Qt实现自定义标题头

描述在很多时候都需要自定义标题头的样式。在Qt里面。如果去掉了系统自带的标题头。那么很多属性也就会消失。例如没法拖拽窗体。没法通过鼠标拉伸窗体。大致实现思路添加一个水平布局。里面分别有两个QLabel以及三个QPushButton。两个QLabel用来显示图标和窗体标题。三个QPushButton分别对应着隐藏。最大化以及关闭按钮。然后鼠标在靠近窗体的边缘的时候需要更改鼠标光标的形状。且可以拉伸窗体。同时鼠标按在标题上可以进行拖拽。此标题头内部维护了QWidget* _ownerWidget.其实就

2020-12-19 11:40:27 520 1

原创 QTreeWidget的添加删除、勾选、导入以及拖拽操作示例

由来因为在工作中对QTreeWidget的操作基本上都是这几个操作。然后平时没做过备忘。就写了很多次重复代码。今天特此备忘一下。以便于后续的使用功能描述此TreeWidget通过右键菜单的方式来操作。目前支持添加、删除、勾选QTreeWidgetItem。同时可以拖拽QTreeWidgetItem用来形成新的层级关系。同时支持从另一个TreeWidget导入到本TreeWidget上面。且维持同样的导入层级关系。添加实现思路根据右键选择的QTreeWIdgetItem作为父节点。直接添加新的子节点

2020-12-19 10:52:14 2888 1

原创 GDB调试使用记录

GDB教程总结在gcc编译生成的时候需要加上-g 参数,以便于使用gdbgcc main.cpp -o main -g然后gdb main进入gdb调试之后输入 r 可开始调试程序。输入 b 7(行号) 可在当前文件的第七行下断点输出 c 继续运行程序gdb命令总结break 添加断点 简写为pprint 打印 print 简写为 prun 运行程序 简写为 rcontinue 继续运行 简写为 cquit 退出gdb 简写为 qlist:查看原代码(list-n,从第

2020-11-02 21:19:33 201

原创 select模型浅析

代码使用示例#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include <ctype.h>#include <sys/select.h>#d

2020-10-10 20:35:05 101

原创 进程通信之共享内存

共享内存定义在软件中,术语共享内存指可被多个进程存取的内存,一个进程是一段程序的单个运行实例。在这种情况下,共享内存被用作进程间的通讯Qt中的共享内存两个进程之间使用共享内存QtTest.h#pragma once#include <QtWidgets/QWidget>#include "ui_QtTest.h"#include <QSharedMemory>//共享内存头文件class QtTest : public QWidget{ Q_OBJECT

2020-09-20 23:57:38 279

原创 Linux使用杂项

GCC编译gcc main.c -o main.out //生成文件名为 main.out###linux运行程序假定程序名为 a.out 在a.out所在目录下运行以下语句./a.out //./ 表示当前目录linux进程操作命令ps -a - 列出所有运行中/激活进程ps -ef |grep - 列出需要进程ps -aux -显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM等pstreelinux中,每一个进程都是由其父进程创

2020-09-20 14:23:01 126

转载 TCP的三次握手与四次挥手

TCP报文格式序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。确认ACK:占1位,仅当ACK=1时,确认号字段才有效

2020-09-20 10:29:26 105

原创 Windows下的线程同步

临界区(关键代码段)用于线程共享资源在同一进程里面不同线程间的互斥访问。使用步骤初始化CRITICAL_SECTION结构CRITICAL_SECTION _criticalSection;//临界区数据结构::InitializeCriticalSection(&_criticalSection);进入临界区::EnterCriticalSection(&_criticalSection);//尝试进入::TryEnterCriticalSection(&am

2020-09-13 12:59:32 139

原创 Linux高性能服务器编程阅读笔记

TCP/IP协议族TCP协议详解TCP服务的特点面向连接、字节流可靠传输使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写。然后才能开始数据的读写。双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输。TCP连接是全双工的。即双方的数据读写可以通过一个连接进行。完成数据交换之后,通信双方都必须断开连接以释放系统资源。Linux网络基础API数据读写TCP数据读写#include<sys/types.h>#include<sys/soc

2020-09-10 21:50:50 128

原创 Effective C++读书笔记

确定对象使用前已被初始化永远在使用对象之前确保其已经初始化。在release版本的时候一定要在构造函数里面进行初始化,否则可能产生很多未知行为导致程序崩溃。使用 member initialization list 初始化成员变量,更加高效。class TestClass{public: explicit TestClass(int a = 1,int b = 2) :_numA(a) ,_numB(b)//推荐这种初始化方式 { _numA = a;

2020-09-07 15:24:47 100

原创 环境配置记录

VS2015中引用DLL的配置直接将DLL拷贝到生成的.exe所在的文件夹中。右键项目属性。选择 配置属性,选择调试 ,选择环境。再将dll所在的目录添加进去

2020-09-06 10:00:37 390

转载 彻底搞懂动态库、静态库、运行时库、引入库之间的区别---转载

定义运行时库:Unix中一个典型的运行时库例子就是libc,它包含标准的C函数,如,print(),exit()等等,用户能创建他们自己的运行库(在Windows中是DLL),而具体的细节依赖编译器和操作系统的。静态库:函数和数据被编译进一个二进制文件(通常扩展名为.lib),静态库实际上是在链接时被链接到EXE的,库本身不需要与可执行文件一起发行。动态库:用VC++创建的动态库包含两个文件,一个lib文件和一个dll文件,这个lib文件就是引入库,不是静态库,引入库有时也叫输入库或导入库。注:w

2020-09-06 09:44:08 1438

原创 C++之lambda表达式

定义C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable 或 exception 声明、-> 返回值类...

2020-08-18 09:20:14 141

原创 QWebEngineView崩溃问题

描述今天在使用QWebEngineView的时候。总是崩溃在 load 函数里面。由于没有看不到内部实现。因此无法排查具体原因。解决办法将以下文件拷贝到和你的执行文件(.exe文件)所在的目录下(即在同一目录下)qtwebengine_resources.pakqtwebengine_resources_100pqtwebengine_resources_200p.pak.pakQtWebEngineProcess.exeicudtl.dat笔者经过以上步骤后成功解决QWebEngin

2020-08-17 22:06:05 2013

原创 提高C++性能的编程技术

第二章 构造函数和析构函数继承当一个对象确实被需要的时候才创建它。对象的创建(或销毁)触发对父对象和成员对象的递归创建(销毁)。要当心复杂层次中对象的复合使用。它们使得创建和销毁的开销更为高昂。初始化成员变量使用显式构造。class FTest{public: FTest(const std::wstring &str) :_str(str)//建议 { // _str = str;//不建议 } private: std::wstring _

2020-08-04 22:52:45 619

原创 libevent源码阅读2---内存管理

勿在浮沙筑高台阅读流程主要是参考 libevent的参考手册,根据其介绍的模块顺序去阅读源码链接http://www.cppblog.com/mysileng/archive/2013/02/04/197717.html内存操作void event_set_mem_functions( void *(*malloc_fn)(size_t sz), void *(*realloc_fn)(void *ptr, size_t sz), void (*free_fn)(void *ptr)){

2020-07-26 09:32:08 106

原创 libevent源码分析1---模块组成以及日志

勿在浮沙筑高台libevent组件evutil用于抽象不同平台网络实现差异的通用功能event和event_basklibevent的核心,为各种平台特定的、基于事件的非阻塞IO后端提供抽象API,让程序可以知道套接字何时已经准备好,可以读或者可以写,并且处理基本的超时功能,检测OS信号bufferevent为livent基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写之外,还可以让程序可以请求缓冲的读写操作,可以知道何时IO已经真正发生(bufferevent接口有多个

2020-07-26 09:00:22 161

原创 深入应用C++11——代码优化与工程实践

第一章 使用C++11让程序更加简洁、更现代可调用对象函数指针void functionPointer(){ std::cout << "functionPointer" << std::endl;}void(*func)(void) = &functionPointer;func();具有 operator() 成员函数的类对象(仿函数)class Test{public: void operator()(int a,int b) { st

2020-07-12 11:10:35 1259 1

原创 Qt不规则异形窗体实现

采用主窗体透明方式实现具体实现思路:首先去掉窗体的标题头,设置主窗体为透明属性,然后需要套一个窗体来显示异形图片即可.关键代码 this->setWindowFlags(Qt::FramelessWindowHint | this->windowFlags());//去掉标题头 this->setAttribute(Qt::WA_TranslucentBackground);//主窗体透明 _layoutMain = new QVBoxLayout; _layoutMain-

2020-07-11 23:43:46 320

原创 Qt使用记录

Qt截取屏幕并保存为图片 auto desktopWidget = QApplication::desktop(); QScreen * pqscreen = QGuiApplication::primaryScreen(); QPixmap pixmap = pqscreen->grabWindow(desktopWidget->winId(), 0, 0, desktopWidget->width(), desktopWidget->height()); pixmap.

2020-07-10 22:02:34 678 1

原创 利用visual studio产生dump文件分析程序崩溃

pdb文件PDB文件是"程序数据库" Program DataBase的简称,包含的程序的代码信息通过此文件可以查看程序断点的位置以及函数运行堆栈等信息。dump文件dump文件全称是 附加堆栈信息的存储文件。 文件拓展名为 .dmp 通过dump文件可以得到程序运行某一时刻的堆栈信息。可用于在程序崩溃的时候,分析此刻的dmp文件来排查崩溃的原因VS中release配置生成pdb文件右键项目属性。连接器-----调试-----选择生成调试信息转储生成dmp文件(VS2015 32位

2020-07-05 10:15:51 4334 2

原创 音视频编程之FFmpeg解码视频保存为图片

FFmpeg介绍FFmpeg基础结构

2020-06-26 21:06:34 1316

原创 常用QSS记录

基本状态状态使用 :(单冒号) 来区分每一个状态hover 鼠标滑过时候的状态pressed 鼠标按下状态QCheckBoxQCheckBox::indicator /*QCheckBox可勾选区域*/{ width:20px; height:16px;}QCheckBox::indicator:checked /*QCheckBox勾选*/{ border-image:url(image/selected.png);}QCheckBox::indicator:un

2020-06-17 15:10:11 242

原创 C/C++总结

获取所在文件以及行号__LINE__ // 在源代码中插入当前源代码行号__FILE__ // 在源文件中插入当前源文件名__DATE__ // 在源文件中插入当前的编译日期__TIME__ // 在源文件中插入当前编译时间__STDC__ // 当要求程序严格遵循ANSI C标准时该标识被赋值为1__cplusplus // 当编写C++程序时该标识符被定义_WIN32 // 在程序运行在windows系统上被定义位1linux //

2020-06-14 10:57:34 697

原创 Qt中的QTcpSocket作为客户端的时候获取绑定的端口号

在socket中,客户端socket并不是必须调用bind函数来指定端口号。而是在连接成功之后会给客户端socket自动分配一个可用的端口号。解决办法在QTcpSocket调用了connectToHost函数成功连接服务端之后。会触发一个 QTcpSocket::connected信号。编写相关的槽函数。在槽函数中调用localPort 函数就可以获取客户端自动绑定的端口号。...

2020-06-09 22:28:58 3931 1

原创 Qt获取本机IP地址的方法

使用Qt中的QHostInfo来获取本地IP地址 QString hostNme = QHostInfo::localHostName(); QHostInfo hostInfo = QHostInfo::fromName(hostNme); auto addList = hostInfo.addresses(); if (addList.isEmpty()) { Q_ASSERT(false); } for (int i = 0;i < addList.count();++i)

2020-05-31 09:14:09 5202

原创 常用git操作

回退到某一个commitgit reset --hard commit id

2020-05-29 09:31:33 250

原创 QTreeWidget的勾选、未勾选以及半勾选

需求在一个QTreeWidget中,一个节点A ,下面有多个子节点 B C D等等,在勾选A的时候,下面的子节点也被勾选,同时BCD都被勾选的时候 A也自动被勾选头文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include<QTreeWidget>#include<QTreeWidgetItem>namespace Ui {class Widget;}class Widget : pu

2020-05-26 11:50:43 1241

原创 Qt中的QLineEdit 取消右键菜单

QLineEdit *lineEdit = new QLineEdit;lineEdit->setContextMenuPolicy(Qt::NoContextMenu);

2020-05-18 15:30:14 2756 2

原创 Boost -----无法打开文件“libboost_thread-vc120-mt-gd-x32-1_73.lib

在配置好boost库了以后,运行一段boost多线程代码,提示如下错误无法打开文件“libboost_thread-vc120-mt-gd-x32-1_73.lib解决在C/C++ 代码生成里面多线程调试 DLL (/MDd)改为多线程调试 (/MTd)

2020-05-17 20:55:03 529

原创 Qt 创建后台系统托盘菜单

创建步骤创建 QSystemTrayIcon 对象创建 QMenu 对象创建具体的QAction对象,绑定相应的实现槽函数将QAction对象加入到 QMenu 对象中QSystemTrayIcon 对象设置相应的托盘图标或者ToolTips调用 QSystemTrayIcon 的 setContextMenu 设置QMenu调用 QSystemTrayIcon 的show 显示菜单即可代码示例_sysTray = QSharedPointer<QSystemTrayIcon&gt

2020-05-16 21:10:31 139

原创 Qt之最简单的日志系统

#include <QtWidgets/QApplication>#include <iostream>#include <windows.h>void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg){ QByt...

2020-04-08 20:36:02 511

Qt检测鼠标移动并显示ToolTips.zip

Qt实现鼠标悬停3s并显示ToolTips

2020-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除