C++
文章平均质量分 74
Keycer
这个作者很懒,什么都没留下…
展开
-
DLL Hell(DLL地狱)浅谈
转载整理自:https://blog.csdn.net/qwertyupoiuytr/article/details/53999586,感谢原作者的分享DLL动态链接库是程序复用的重要方式,DLL可以导出函数,使函数被多个程序复用,DLL中的函数实现可以被修改而无需重新编译和连接使用该DLL的应用程序。作为一名面向对象的程序员,希望DLL可以导出类,以便在类的层次上实现复用。所幸的是,DLL确实也可以导出类。然而事实却没这么简单,导出类的DLL在维护和修改时有很多地方必需很小心,增加成员变量、修改导转载 2020-05-31 23:56:49 · 557 阅读 · 0 评论 -
Qt使用内存、硬盘、网络三级缓存来获取图片列表并列表显示的例程
运行效果主要代码mainwidget.h#ifndef MAINWIDGET_H#define MAINWIDGET_H#include <QWidget>namespace Ui {class MainWidget;}class MainWidget : public QWidget{ Q_OBJECTpublic: expl...原创 2020-04-25 14:38:17 · 1133 阅读 · 0 评论 -
实现私有化(Pimpl) --- QT常见的设计模式
转载自:http://blog.sina.com.cn/s/blog_667102dd0100wxbi.html一、遇到的问题1.隐藏实现我们在给客户端提供接口的时候只希望能暴露它的接口,而隐藏它的实现或者算法。这时候,至少至少有两种选择:(1)写一个抽象类, 然后继承它(2)使用PIMPL, 把实现放到内部公有的文件里,而对外部隐藏起来 2转载 2015-11-02 15:03:23 · 4315 阅读 · 1 评论 -
一个支持tcp多客户端连接的例子,轻松认识linux select函数的基本原理和使用方法
这本是libmodbus-3.0.6中的一个例子,觉得是学习select很好的例子,注释了一下分享出来!#include #include #include #include #include #include #include #include #include #include #define NB_CONNECTION 5modbus_t *ctx = N原创 2015-08-28 17:22:54 · 4320 阅读 · 0 评论 -
Qt-Linguist工具简单介绍和使用方法
转载自:http://blog.163.com/bingcaihuang@126/blog/static/198942122010103115655557/QT-Linguist工具主要用在项目的多语言翻译处理过程中,所有先简单介绍一下整个多语言处理过程,最后介绍Linguist的用法。(一)QT项目实现多语言,必须做两件事:1)确保每一个用户可见的字符串都使用了tr()函数。2)转载 2015-06-14 22:37:33 · 13162 阅读 · 0 评论 -
Qt:拖拽图片到QLabel上并显示
转载自:http://www.cppblog.com/biao/archive/2011/10/23/158940.html仅供参考!实现代码:#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include #include MainWindow::MainWind转载 2015-06-17 19:45:04 · 3744 阅读 · 1 评论 -
qt 调试语句的处理 禁用和重定向到文件
转载自:http://blog.csdn.net/godvmxi/article/details/41774815, 感谢原作者分享!在qt调试中,qdebug是个非常方便的功能,只需要在包含#include ,你便可以在代码中随时随地使用打印调试语句了,并且可以选择对应的调试等级。这些函数按照调试的等级以此有,其中qFatal执行后程序直接退出,并用对话框提示相关错误:转载 2015-05-21 13:51:24 · 2065 阅读 · 0 评论 -
Qt事件处理机制整个流程--以鼠标在一个窗口中点击为例
转载自:http://mobile.51cto.com/symbian-272812.htm,在此谢谢原作者的分享!------------------------第一部分----------------------本篇来介绍Qt 事件处理机制 。深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集。 大家熟知Signals/Slots在多线转载 2015-03-13 14:28:53 · 17665 阅读 · 0 评论 -
Qt的阻塞延时与非阻塞延时
非阻塞延时:void GreenPass3::delaymsec(int msec){ QTime dieTime = QTime::currentTime().addMSecs(msec); while( QTime::currentTime() QCoreApplication::processEvents(QEventLoop::AllEv转载 2015-03-01 17:41:37 · 4015 阅读 · 0 评论 -
数值比较应该注意的一点
如下的程序:short m=0xFFFF;if((unsigned)m == (unsigned)0xFFFF){ printf("YES\n");}else{ printf("NO\n"); printf("m=%u, 0xFFFF=%u\n", (unsigned)m, (unsigned)0xFFFF);}输出的结果看似应该为“YES”,实际上的输出原创 2015-02-27 20:13:17 · 814 阅读 · 0 评论 -
继承QVector----模板类的继承
对于模板类,一般把接口与实现都放在头文件中(QVector就是这样的,不信翻Qt源码),不然很折腾。myvector.h#ifndef MYVECTOR_H#define MYVECTOR_H#include #include template class MyVector : public QVector{public: MyVector(){} QSt原创 2015-01-15 19:32:25 · 1717 阅读 · 0 评论 -
使用WinRar将Qt编译生成的exe和依赖的dll文件打包为一个exe文件的简单方法
如题,需要将QtCreator编译生成的*.exe文件和它所依赖的动态链接库(*.dll)文件打包为一个exe文件,步骤如下:(1)将编译生成的AppTest.exe、依赖的库文件、图标文件等复制到一个新建的文件夹下,如图:(2)选中所有文件,鼠标右键,选择”添加到压缩文件“,在弹出的winrar对话框中输入压缩文件名(注意,这个文件名不能为已有的AppTest.exe,否则会出错原创 2015-11-10 10:57:30 · 4133 阅读 · 1 评论 -
为什么要在JAVA,C++等集合中引入迭代器
迭代模式是访问集合类的通用方法,只要集合类实现了Iterator接口,就可以用迭代的方式来访问集合类内部的数据,Iterator访问方式把对不同集合类的访问逻辑抽象出来,使得不用暴露集合内部的结构而达到循环遍历集合的效果。 例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:for(int i=0; i这种方法的缺点就是事先必须知道集合的数据结构,而且当我换了一种集合的话转载 2015-10-26 18:39:30 · 1233 阅读 · 0 评论 -
Linux中复制C/C++程序的所有依赖库的脚本
脚本如下,保存为copy.sh,放到C/C++程序所在的文件夹(以C/C++程序名为App为例)deplist=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' ) cp -L -n $deplist $2然后运行./copy.sh App ./脚本运行结束后可以看到,App所依赖的所有库都被复制到了App所在文件夹下...原创 2019-07-26 19:22:48 · 985 阅读 · 0 评论 -
使用MFC时,为什么Printf函数没有效果
将下面这段代码加入到MFC程序初始化的地方void InitConsoleWindow(){ int nCrt = 0; FILE* fp; AllocConsole(); nCrt = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT); fp = _fdopen...原创 2018-10-16 14:52:47 · 1179 阅读 · 0 评论 -
Visual Studio各个版本对应关系
名字版本号简称全称msvc70VC7.0VS2002Microsoft Visual Studio 2002msvc71VC7.1VS2003Microsoft Visual Studio 2003msvc80VC8.0VS2005Microsoft Visual Studio 2005msvc90转载 2018-01-09 10:49:50 · 31331 阅读 · 2 评论 -
QListView的item去掉选中时的虚线、更改鼠标悬浮与选中时背景样式
1.去掉选中时的虚线#ifndef MYPROXYSTYLE_H#define MYPROXYSTYLE_H#include class MyProxyStyle : public QProxyStyle{public: MyProxyStyle();protected: virtual void drawPrimitive(PrimitiveElement原创 2017-11-16 23:37:54 · 3559 阅读 · 0 评论 -
Qt+MSVC使用libmodbus实现modbus主机功能
描述:(1)libmodbus库是一个基于mingw的c语言modbus库,可以实现modbus主从机功能,但不能在VC环境下使用;(2)使用mingw包装成与编译环境无关的c语言动态链接库ModbusCDll.dll;(3)根据mingw编译所得的c语言动态链接库ModbusCDll.dll生成VC链接时需要的ModbusCDll.lib文件;(4)编写程序使用MSVC编译,并使原创 2016-10-06 20:26:09 · 7614 阅读 · 2 评论 -
VC 调用 MinGW 生成的dll
转载自:http://blog.csdn.net/liyuanbhu/article/details/44650641首先,如果dll 中导出了C++的类,那么就不要折腾了。不同的编译器编译出来的C++代码是不保证通用的。如果dll中只是一些C 函数,那么是可以互相调用的。 MinGW 生成dll时即使生成了 .a 文件也是不能用到VC 上的(至少我用的VC20转载 2016-10-06 19:07:45 · 1079 阅读 · 0 评论 -
Qt事件循环的一些理解(exec、eventloop)
转载自:http://blog.chinaunix.net/uid-27685749-id-3847998.html1、事件循环一般用exec()函数开启。QApplicaion::exec()、QMessageBox::exec()都是事件循环。其中前者又被称为主事件循环。事件循环首先是一个无限“循环”,程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会转载 2016-08-06 12:52:43 · 6257 阅读 · 0 评论 -
Qt事件传递机制(QApplication::installEventFilter的作用)
文章来自:http://blog.csdn.net/iamdbl/article/details/1630043#Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理。假设我们有一个CustomerInfoDialog控件,由一些QLineEdit控件组成。我们希望使用Space键得到下一个QLineEdit的转载 2016-04-20 09:19:32 · 3212 阅读 · 0 评论 -
Qt QPainter中坐标系变换问题
一、坐标系简介。Qt中每一个窗口都有一个坐标系,默认的,窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小。原点即为(0,0)点,然后以像素为单位增减。例如:void Dialog::paintEvent(QPaintEvent *){ QPainter painter(this); painter.se转载 2014-12-01 18:54:15 · 8426 阅读 · 1 评论 -
./stockchart: symbol lookup error: ****/libqwt.so.6: undefine symbol: _ZNK7QLocale14firstDayOfWeekEv
在arm-linux平台上运行qwt示例程序中的stockchart出现错误:./stockchart: symbol lookup error: ****/libqwt.so.6: undefine symbol: _ZNK7QLocale14firstDayOfWeekEv解决问题的过程:注:查找时使用find ./ -name "*" | xargs grep "_ZNK原创 2014-11-27 16:24:44 · 2053 阅读 · 0 评论 -
MinGW简介
3.1:MinGW 是什么? MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU(http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了L转载 2013-12-06 16:26:52 · 1356 阅读 · 1 评论 -
Qt实现串口编程
windows下Qt实现串口编程的例子,仅作参考(Qt 5.1.1环境下编译运行通过):工程所需文件如图所有文件源代码/************mainwindow.h*************/#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include #include #include "win_qexts原创 2013-12-08 21:54:08 · 20332 阅读 · 10 评论 -
win7下简单搭建Qt开发环境(不需安装vs)
在windows下学习C++和Qt时,总是愁于找不到合适的编译器,因为vc++是收费的,并且vc++安装文件非常庞大,安装起来也很麻烦。其实可以使用windows下的g++工具,也就是mingw来搭建c++编译环境。在Qt的官网下载页(网址:http://qt-project.org/downloads)中,我们可以看到这样一个下载包点击这个链接,可以下载到如下的安装文件原创 2013-12-08 22:21:23 · 4677 阅读 · 0 评论 -
C++ stl使用之vector的基本使用和遍历
代码如下:#include #include using namespace std;int main(){ cout << "c++ stl vector and iterator test!" << endl; cout << "increase number" << endl; vector vec; vec.push_back(1);原创 2013-07-19 09:57:34 · 3941 阅读 · 0 评论 -
C语言回调函数一个简单的例子
回调函数通俗的解释: 普通函数:你所写的函数调用系统函数,你只管调用,不管实现。 回调函数:系统调用你所写的函数,你只管实现,不管调用。以下是使用C语言实现回调函数的一个例子:代码:#include void PrintNum(int n);void ShowNum(int n,void (* ptr)());void PrintMessage1();原创 2013-06-28 17:08:49 · 44914 阅读 · 5 评论 -
C++中的static类成员
在写程序是经常会遇到这种情况:需要统计某一个类的所有对象实例的个数。一个比较简单的方法是使用一个全局的变量,但是其缺点也是显而易见的。使用static成员可以很好的解决这个问题。相对与使用全局变量使用static成员有以下优势1) static成员是在类的作用域内,很好的避免了和其他全局变量重名的问题。2)可以实现封装,static成员在访问控制上和其他的成员一样可以为private2转载 2013-07-08 15:45:27 · 1168 阅读 · 0 评论 -
qt多线程一个简单的例子
代码如下:/**********Main.cpp*************/#include #include "MainWindow.h"int main(int argc,char *argv[]){ QApplication a(argc,argv); MainWindow window; window.show(); return a.exec();原创 2013-07-08 13:27:17 · 12965 阅读 · 5 评论 -
QT学习笔记——如何调用父类的构造函数
C++.QT学习笔记——如何调用父类的构造函数 派生子类会继承基类的所有成员,除了构造函数和析构函数。也就是说子类是无法继承父类的构造函数和析构函数的.因此,子类对于从父类继承过来的成员变量,若不想自己写构造函数初始化时,就只能先初始化父类中的成员变量,然后再继承过来。如以下程序中: 子类Student1中的构造方法只有对新增成员int age和string ad转载 2013-03-26 17:21:14 · 4849 阅读 · 0 评论 -
C++函数模版和类模版基础
模版把函数或类要处理的数据类型参数化,表现为参数的多态性。模版用于表达逻辑结构相同,且具体数据元素类型不同的数据对象的通用行为,从而使得程序可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。 函数模版参考代码: #include using namespace std;template //,效果是一样的。T _min(T x,T y) //注原创 2013-03-13 12:59:06 · 907 阅读 · 0 评论 -
如何区别c/c++中的#typedef 和 #define的区别
#typedef只是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),而#define原本在C中是为了定义常量, 到了C++,const、enum、inline的出现使它也渐渐成为了起别名的工具。有时很容易搞不清楚与typedef两者到底该用哪个好,如 #define INT int这样的语句,用typedef一样可以完成,用哪个好呢?我主张用typedef,因为在早期的许多C编译器中这条语转载 2013-09-13 15:25:12 · 1025 阅读 · 0 评论 -
C/ C++变量和函数混合调用
C++与C变量或函数的混合调用分类: C/C++ 2012-12-23 10:37 513人阅读 评论(0)收藏 举报第一部分:C++调用C变量或函数如果我想在C文件中实现某些功能,在CPP文件实现对这些功能的调用,我该如何做呢?先将程序贴出来,然后在分析:[cpp] view plaincopy// file name :转载 2014-03-23 17:51:14 · 723 阅读 · 0 评论 -
Qt QToolTip详解
Qt4中的tooltip与win32中的tooltip有很多不一样的地方,下面来总结一下。一是不能直在堆或栈中生成QToolTip对象。因为其构造函数为私有。二是从widget获取的tooltip不是tooltip对象,而是tooltip中的文本。三是tooltip跟本不是一个widget。所以不把它当作widget用。四是tooltip类是一个静态类,所以跟本不必生成tool转载 2014-11-22 14:39:50 · 19635 阅读 · 0 评论 -
Qt 安装事件过滤器installEventFilter
Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理。假设我们有一个CustomerInfoDialog控件,由一些QLineEdit控件组成。我们希望使用Space键得到下一个QLineEdit的输入焦点。一个最直接的方法是继承QLineEdit重写keyPressEvent()函数,当点击了Space键时,调用focu转载 2014-11-22 14:32:24 · 12567 阅读 · 0 评论 -
QT中使用另外的线程运行定时器(不用新建QThread子类)
编写QT程序时,时常会需要使用定时器QTimer来执行一些定时任务,但当定时任务执行的时间过长,则会影响整个界面的响应,因此会想到使用另一个工作线程来执行定时器,一般情况下可以选择从QThread派生一个线程类,然后重载run并执行任务逻辑,那下面就介绍一个不用从QThread派生并使用QTimer的例子。在类定义public中添加转载 2014-11-22 14:17:20 · 5629 阅读 · 3 评论 -
Qt QInputContext
想在一个QT应用中用软键盘进行输入,于是要先研究下软键盘输入原理,幸运的是Qt4.7.0库中带有一个InputPanel的示例程序,怀着激动的心情先打开运行一遍,但发现怎么点也输入不了,于是开始仔细阅读程序和帮助,想搞清楚软键盘输入的原理以及这里是否存在bug,如果有bug那它又在哪里,怎么修改等等。 现在解释程序代码如下: myinputpanel.h#ifnd转载 2014-10-08 09:34:44 · 9944 阅读 · 3 评论 -
Linux下使用RAW SOCKET原始套接字构造UDP原始数据帧广播到局域网,在局域网的另一台计算机上显示UDP发送的信息
因为使用IEC61850需要直接访问以太网数据链路层原创 2014-09-12 15:48:57 · 7053 阅读 · 0 评论 -
C++三种参数传递方法(值传递、指针传递、引用传递)的一些知识
C++的函数参数传递有三种方法:值传递、引用传递、指针传递原创 2014-08-29 11:58:56 · 1665 阅读 · 0 评论