- 博客(630)
- 资源 (19)
- 收藏
- 关注
转载 QTcpSocket 同步函数
目标,qt程序作为客户端,windows下winsock作为服务器端,实现两端通信。开始时写了一个小函数测试:[cpp] view plaincopyprint?QTcpSocket tmpSock; tcpSock.connectToHost("59.64.159.87",7716); tcpSock.write(buf,strlen(bu
2016-09-19 22:37:37
4959
原创 0x669586df (QtCored4.dll) 处最可能的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突
0x669586df (QtCored4.dll) 处最可能的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突 pSubWnd = new PluginMdiSubWidget(this);//加载插件 pSubWnd->setObjectName(PluginBaseInfo->GetPluginName());
2016-09-18 11:44:23
5589
转载 跨dll中使用单例 不要使用模板
C++中模板单例的跨SO(DLL)问题:RTTI,typeid,static,单例(转载请注明原创于潘多拉盒子)C++的模板可以帮助我们编写适合不同类型的模板类,给代码的复用性提供了极大的方便。近来写了一个涉及单例的C++模板类,简化下来可以归结为以下的代码:1234567891011template
2016-08-31 16:10:43
3055
1
原创 QByteArray的构造 一定要有size(),否则数据不全
QByteArray( m_spLoginQrResp->qrinfo().c_str(), m_spLoginQrResp->qrinfo().size() )
2016-08-31 11:40:09
8453
原创 字符串 字符数组
字符串是一个比较笼统的概念,C、C++中本身并没有“字符串”这种数据类型。所谓的字符串,一般是指,很多字符组成的序列。通常他们会用数组来表示,为了标志字符串已经结束,最后用一个\0,来表示字符串结束了。字符串在代码中,只有两种存在形式,第一种是指针,char* 第二种是数组,char temp[100];创建字符串有两种方法:一、字符串指针 c
2016-08-31 11:37:02
551
原创 c_sstr()
m_pix.loadFromData( QByteArray(m_spLoginQrResp->qrinfo().data(),m_spLoginQrResp->qrinfo().size()) );c_str()这个函数,会将string截断,会被空白字符截断,
2016-08-31 10:55:37
537
原创 子线程 run() 函数中,调用其他函数
class TestObj: public QObject{ Q_OBJECTpublic: void EmitSig() { emit sigTest();//都是在子线程中, } signals: void sigTest();};TestThread::TestThread
2016-08-24 17:26:22
2085
原创 线程安全 与 跨线程使用 没有任何关系
QObject类,及其子类不是线程安全的,但是,丝毫不妨碍,QObject跨线程使用,所以说,虽然QTcpSocket类不是线程安全的, 但是,按道理来说,该类,可以在子线程和主线程中同时使用,才对
2016-08-24 14:40:11
583
原创 跨线程 信号的连接类型
Qt 需要查看信号发出的线程是不是与接受者所在线程一致,来决定连接类型。注意,Qt 检查的是信号发出的线程(即,信号在哪个Thread中emit的,)classThread :public QThread{Q_OBJECTsignals: voidaSignal();protected: voidrun(){
2016-08-24 14:20:46
669
原创 GUI类 只能在主线程中被使用,不能跨线程使用
此外,QWidget及其子类,以及所有其它 GUI 相关类(即便不是QObject的子类,例如QPixmap),甚至不是可重入的:它们只能在 GUI 线程访问。
2016-08-24 14:06:09
2027
原创 线程安全 问题 如何判断一个类是否是线程安全的
值得注意的一点是,QObject及其所有子类都不是线程安全的(但都是可重入的)。因此,你不能有两个线程同时访问一个QObject对象,除非这个对象的内部数据都已经很好地序列化(例如为每个数据访问加锁)。
2016-08-24 14:05:10
7927
原创 qt中的线程 拥有权 一个对象属于哪个线程
C++class MyThread : public QThread{public: MyThread() { otherObj = new QObject; } private: QObject obj; QObject *otherObj; QScopedPointer yetAnotherObj;};
2016-08-24 14:03:45
4220
转载 QTcpSocket 跨线程 QThread拥有权问题
本文介绍的是Qt中采用多线程Socket编程,由于工作的需要,开始接触Qt的socket编程。Qt里的example是个不错的教程,但是当我把代码移植到多线程的环境时就出问题了:QObject: Cannot create children for a parent that is in a different thread. 由于想要在线程中保留一个socket,以便维持双边通信,因此定
2016-08-24 13:53:19
8783
原创 lib库 找不到 属性配置都没有问题,但就是lib库找不到
自己电脑编译链接没有问题,但是把代码拷贝到别人电脑后,同样的代码,出现lib库找不到,该lib是工程里的htmlEditor.lib库,解决方法,修改该lib名字为1.lib,修改工程的属性配置,依赖库改为1.lib,即可,
2016-08-24 09:50:38
771
转载 error LNK2001: 无法解析的外部符号
[8]出现如下错误的原因一般是动态库没有包进来。__impProjectRun.obj : error LNK2019: 无法解析的外部符号 __imp__StartHistoryLocalModule,该符号在函数 "protected: virtual int __thiscall HiRTDB::CProjectRun::DoStart(void)" (?DoStart@CProject
2016-08-02 16:52:11
3068
1
原创 error LNK2019: 无法解析的外部符号 +++++++++++++++++
指定附件依赖项 lib,指得是,具体依赖的lib的名字,必须指定,否则链接错误,error LNK2019: 无法解析的外部符号 工程右键,属性窗口中,
2016-08-02 16:43:53
764
转载 qt tcp长连接 粘包
一、长连接与短连接1、长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2、短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个Client连接一个Server。二、什么时候需要考虑粘包问题?1、如果利用tcp每次发送数据,就与对方建立连接
2016-08-01 15:27:15
2562
原创 长连接 概念
短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是短连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,下次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接,如果用短连接
2016-08-01 15:14:13
370
原创 http 长连接 ++++++++++++++++++ 手动维持 长连接
//http?????? //m_pSimpleHttp = new SimpleHttp(HTTP_KEEPALIVE,this);//????? ?http??------------------- NetWorkCommunication?????SimpleHttp??? //?m_pSimpleHttp?? http???
2016-08-01 15:13:33
972
转载 list vector 时间复杂度
vector从名字看,随机访问的复杂度应该是O(1)插入 vector O(n)list 插入是O(1)linkedList random access的时间复杂度为O(n),find的时间复杂度为O(n),
2016-08-01 10:50:09
10267
转载 时间复杂度
根据定义,可以归纳出基本的计算步骤1. 计算出基本操作的执行次数T(n) 基本操作即算法中的每条语句(以;号作为分割),语句的执行次数也叫做语句的频度。在做算法分析时,一般默认为考虑最坏的情况。2. 计算出T(n)的数量级 求T(n)的数量级,只要将T(n)进行如下一些操作: 忽略常量、低次幂和最高次幂的系数 令f(n)=T(n)的数量级。
2016-08-01 10:45:47
388
转载 修改环境变量后,不需要重启电脑,但是需要重启exe
这里要理解的是,一个程序启动时,环境变量被复制到该程序所在的环境中,在该程序执行过程中不会被除该程序以外的其他程序所改变。也就是说,假设我们启动了一个cmd程序,然后通过控制面板修改了环境变量设置,但是已经启动了的cmd所拥有的环境变量并不会被改变。如果我们在修改环境变量之后启动cmd程序,则该程序将拥有新的环境变量。那么结论就很明显了:修改环境变量之后,如果受影响的是应用程序,那么只要简
2016-07-29 10:23:43
7643
1
转载 Qt 使用QPluginLoader 加载外部dll的方法笔记
[cpp] view plain copy 项目的一个需求是提供一个dll文件给其他 可执行文件调用。借这个机会也正好可以解决我之前一个在线升级使用更新dl方法l的思路。在此记录一下。各位大神如果有其他方法和思路欢迎一起探讨或者赐教。。dll 调用接口 :[cpp] view plain copy class IU
2016-07-28 14:24:08
4056
转载 qt 预言家 翻译
虽然时间已过去很久,但我还是要回复一下,因为我找到了解决方法,希望能对其他人有帮助。问题的原因在于:QTextEdit中使用的对象QWidgetTextControl中的复制、粘贴等右键菜单选项在qt_zh_CN.qm中没有被翻译。解决方法:打开qt-everywhere-opensource-src-5.2.0\qtbase\src\widgets目录,用Qt Creator打开widg
2016-07-04 10:48:31
1287
转载 qt 打印 刻度尺 曲线 复杂图像
图表费点劲还可以用Html(textDocument.setHtml(html); textDocument.print(&printer);)的方法实现。曲线图呢?坐标轴的刻度尺,刻度对应的数字大小、位置,曲线缩放比例,每一个绘图点的绝对及相对坐标(绝对坐标零点是在纸的左上角,相对坐标零点是在坐标轴的左下角)……。在网上查阅了一些资料,在有些网友提供的代码里,他们还真的是一笔一笔画出来的,计算图
2016-07-04 10:30:42
2917
转载 去除QComboBox中item项的虚线
把这句话,加到qss文件里:QComboBox QAbstractItemView {outline: 0px;}我再一次相信,技术相关的问题,一定要去google上去搜,百度真心垃圾..
2016-06-23 10:46:24
991
原创 DEVENV.COM c++持续集成工具
关于C++的持续集成用哪个工具在网上根本没找到C++语言做持续集成的资料,只有做JAVA的一些资料,有高手做过没有。用的哪个工具做的,具体怎么配置请指教??Msbuild,nant等 或直接用DEVENV.COMDEVENV.COM就是安装VS自带的一个命令行工具,可以通过敲命令 -h查看帮助DEVENV.
2016-06-07 16:33:04
1003
原创 QBuffer的使用
QBuffer主要解决,char*类型的值,比如共享内存中,data()返回的char* 类型的值, QBuffer buffer; buffer.setData( static_cast( m_mem.data() ),m_mem.size() ); QString strt = buffer.data();不需要跟QDataStream扯在
2016-06-03 16:38:30
6151
原创 QSharedMemory
QSharedMemory首先是setKey(),这是标记共享内存的一个标识符,在整个操作系统的共享内存中,用这个key去标识它,唯一标识。attach()函数,在workstation.exe进程中,调用 该共享内存的attach()函数,注意是,将该exe绑定到该共享内存中,如果要使用某个共享内存,必须要想将exe绑定到共享内存中,只有绑定成功,才能使用,
2016-06-03 15:18:48
4541
转载 QSharedMemory 共享内存 进程间通信
QT间进程通信之共享内存 Qt提供了一种安全的共享内存的实现QSharedMemory,以便在多线程和多进程编程中安全的使用。比如说QQ的聊天的客户端,这里有个个性头象,当点击QQ音乐播放器的时候,启动QQ音乐播放(启动一QQ音乐播放器的进程)这时QQ音乐播放器里也有一个个性头像,这两者间的头像一样,现用共享内存的方法实现。先说下实现共享内存的步骤,然后用一具体的实例说明。向共享内
2016-06-03 15:11:45
3139
2
原创 QDialog的accept()函数和reject()函数
QDialog的accept()函数和reject()函数这两个函数作用分别是:都能够隐藏QDialog,但是返回值不同,一个是Accepted,一个是Rejected,返回值不同的作用是:区分用户按下的OK按钮,还是Cancel按钮。
2016-06-03 14:58:27
14985
1
原创 QDialog accept()函数 和 QCloseEvent的accept()
QDialog的槽函数accept(),作用:隐藏此框并设置结果为Accepted。QCloseEvent类的accept()函数的作用一样:关闭该QWidget, void DownloadWidget::closeEvent(QCloseEvent* event) { if (!m_bCancel)
2016-06-03 14:48:22
4970
转载 event()函数 事件分发处理函数
今天要说的是event()函数。记得之前曾经提到过这个函数,说在事件对象创建完毕后,Qt将这个事件对象传递给QObject的event()函数。event()函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的事件处理器(event handler)。event()函数主要用于事件的分发,所以,如果你希望在事件分发之前做一些操作,那么,就需要注意这个event()函数了
2016-06-03 14:43:28
1859
转载 qevent accpt()和ignore() closeEvent()事件
Close事件有点不同(与其他的事件,mouse,key等不同),调用QCloseEvent:ignore()取消了关闭操作,而accept()告诉Qt继续执行正常的关闭操作。而且closeEvent()事件处理函数中,必须明确的调用,accept()与ignore(),否则默认是accpt()的,即默认情况下,会关闭掉窗口,为了避免混乱,最好是在closeEvent(
2016-06-03 12:05:55
2228
转载 qevent accept()和ignore() 函数
这两个函数accept/ignore的功能,只是设定标记,一些事件类型可以被传递。这意味着假如目标对象不处理一个事件,Qt会试着寻找另外的事件接收者。用新的目标来调用QApplication::notify()。举例来讲,key事件是传递的,假如拥有焦点的Widget不处理特定键,Qt会分发相同的事件给父widget,然后是父亲的父亲,直到最顶层widget。那么何
2016-06-03 12:02:55
3446
转载 qevent 事件的accept()和ignore()
本章内容也是关于Qt事件。或许这一章不能有一个完整的例子,因为对于事件总是感觉很抽象,还是从底层上理解一下比较好的吧!前面说到了事件的作用,下面来看看我们如何来接收事件。回忆一下前面的代码,我们在子类中重写了事件函数,以便让这些子类按照我们的需要完成某些功能,就像下面的代码:void MyLabel::mousePressEvent(QMouseEvent *event)
2016-06-03 11:34:49
13293
转载 qt 事件 详细解释
事件(event)是有系统或者Qt本身在不同的时刻发出的。当用户按下鼠标,敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件是在对用户操作做出响应的时候发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。 一般来说,使用Qt编程时,我们并不会把主要精力放在事件上,因为在Qt中,需要我们关心的事件总会发出一个信号。比如,我们关心的是QPushButton的鼠
2016-06-03 11:28:42
946
com自学视频教程
2014-07-22
EffectiveC++ More Effective C++中文版 chm格式
2014-03-05
windbg相关自学资料
2014-03-04
tcp协议如何处理链接超时
2014-03-01
mfc文档视图结构详解
2014-03-01
c++学习路线图及其精品推荐书籍
2014-03-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人