C++与QT
记录学习C++过程中的心得
henreash
Think Differently.
展开
-
QT GUI总结
QT提供了设计师工具,可以很方便的使用鼠标拖拽的方式绘制界面。绘制完毕后自动生成一个界面的.h文件(如ui_mainwindow.h),其中含有一个自动生成的Ui_MainWindow类,这个类中核心的函数是setupUi,根据界面向导的不同里面接收一个QWidget *参数或者QMainWindow *参数。这个函数会自动在传入的QWidget或QMainWindow上根据设计师绘制的界面创建可原创 2011-11-03 17:08:00 · 24553 阅读 · 5 评论 -
QT实现不规则窗体
看到网上有很多不规则窗体的实现,效果很酷.于是使用QT也实现了一个,QT的不规则窗体实现非常简单,只需要设置一个mask(遮掩)图片,这个图片的格式可以使用png或bmp格式,我使用了png格式,默认窗体是矩形的,使用png图像,将需要隔离在窗体之外的区域的像素设置为白色或透明色,其他颜色的区域对应显示出来的窗体.关键代码就几行.#ifndef IRREGULARFORM_H#define原创 2012-05-31 10:38:39 · 17298 阅读 · 19 评论 -
使用QT实现MDI风格的主窗体
QT提供了MDIArea控件可以很方便的实现标准的MDI窗体,但用起来并不方便.感觉像360浏览器一样通过页签来切换子窗体的方式比较好.点击菜单项或工具栏上的按钮创建新的页签,并生成一个子窗体.点击页签上的叉号关闭页签并释放子窗体对象.为了实现这种风格的MDI,可以借助QT的TabWidget控件,设置其tabsClosable属性为true,即可在页签上显示叉号.点击页签上的叉号时出发tabWi原创 2012-05-31 09:21:58 · 15952 阅读 · 8 评论 -
qt+boost::asio+tcp文件传输
客户端:void qt_boost::pbSendFileClicked(){ QString filename = ui.leFileName->text(); QByteArray ba = filename.toLatin1(); char * pfilename = ba.data(); std::ifstream ifs(pfilename, ios::in|io原创 2012-05-04 14:17:02 · 10489 阅读 · 3 评论 -
vs2008+QT+asio tcp服务端测试程序
有了客户端的扫雷,创建服务端还是比较顺畅的,直接将客户端需要include的头文件加进来,额外添加一个#include 头文件(注:#include 文件未包含在#include 中.)由于asio服务端需要在一个线程中启动异步操作,即一个死循环等待socket事件,因此需要创建一个线程,这里使用QT的线程支持即可.创建QThread的子类,重写其run()虚函数,在里面调用io_service:原创 2012-04-24 18:35:00 · 4078 阅读 · 0 评论 -
vs2008+QT+asio tcp客户端测试程序
今天尝试在QT项目中使用asio作为网络通信库,直接将asio的echo同步tcp客户端范例代码移到QT项目中后编译,说WinSock.h已经被包含过,编译不过去.将所有与asio相关的include语句放在最前面,解决了编译问题.但是代码智能提示没有了,好郁闷.查找了很多资料也没有找到解决方法,没办法将所有boost的代码重新编译一次,还是不行.新建一个QT项目,向其中引入boost/array原创 2012-04-19 16:57:29 · 4917 阅读 · 1 评论 -
Boost::asio范例分析 服务端线程池实现
在http范例的server2实现中引入了线程池,server2的业务逻辑实现与server1相似.这里只分析与线程池有关的代码. main函数中添加了一个额外的参数指定线程池大小.并在server类中声明了一个线程池类成员io_service_pool io_service_pool_;这个类的构造函数接收一个整型参数io_service_pool_size指定线程池大小.在server类原创 2012-05-14 09:38:12 · 9880 阅读 · 4 评论 -
Boost::asio范例分析 服务端
main函数要求程序调用者传递3个参数:服务器IP地址,端口号和文档根目录.其中IP地址可以是IPv4或IPv6格式.接着创建server对象实例,将传递进来的IP地址,端口号,文档根目录作为server对象的构造函数参数传递到处理程序中.最后调用server的run成员函数启动服务端处理例程. http::server::server s(argv[1], argv[2], argv[原创 2012-05-13 11:23:14 · 19762 阅读 · 4 评论 -
Boost::asio范例分析 客户端
为了方便描述,这里只分析一下同步实现,异步实现方式和同步方式的流程是一致的,只是在函数调用的方式上有些区别.分析清楚了同步方式,在看异步实现,也很容易. 这个HTTP范例实现了客户端向服务端请求文件内容的功能,客户端给出一个文件名称,服务端在本地寻找文件,并将文件内容(文本文件)返回给客户端. main函数首先检查传递给exe执行文件的参数,第一个参数是服务端的IP地址,第二个参数是请原创 2012-05-12 13:25:37 · 7324 阅读 · 1 评论 -
Boost.Asio技术文档
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt)Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下稳定的异步翻译 2012-04-17 15:27:33 · 25504 阅读 · 5 评论