QT小例子
AAA20090987
一个喜欢编程,喜欢C 的人
展开
-
QT:递归遍历(子)文件夹
程序很简单,直接上代码:#include #include void ShowFiles(int level, const QString &path){ //这个函数可以执行任何任务, //这里只是简单地输出各个文件(夹)的名字 QDir dir(path); QStringList list; QStringList::Iterator iter; QString t原创 2012-03-04 23:18:21 · 3044 阅读 · 0 评论 -
QT: 在QT程序中使用cout和cin
<!--p, li {white-space:pre-wrap}-->1先输入10个数字,再输出。#include #include #include int main(int argc, char *argv[]){ QCoreApplication app(argc, argv); QTextStream cin(stdin, Q原创 2011-07-21 09:05:15 · 11152 阅读 · 1 评论 -
QT:三态按钮
三态按钮(普通态,鼠标停留态,点击态)在设计炫丽界时是很常用的一项功能,但QT并没有直接支持这个功能,只好自己写一个了,通过继承QToolButton实现。上代码:#include class CoolButton : public QToolButton{ Q_OBJECTprivate: QIcon m_NormalIcon; QIcon m_FocusIco原创 2012-04-09 23:11:57 · 7053 阅读 · 2 评论 -
QT:多行输入框的实现
在QT中,利用QIuputDialog可以轻易地输入一段字符串,但这个方法有两个缺点:1:不能直接输入多段字符2:不能在accept或reject的时候作一些额外的处理,我自定义了MultiInputDialog类,可以很好的解决这个问题。思路:该程序很简单,就多作解释了截图:上代码:#include class MultiInp原创 2012-04-23 23:18:57 · 10179 阅读 · 1 评论 -
QT:浮动的饼状统计图(自绘不规则窗口)
昨天在玩手机游戏时,见到一个游戏的饼状投票统计图很漂亮,所以我今天也花了一个下午来实现了一个类似的程序娱乐一下,呵呵。思路:1:将窗体设为Qt::FramelessWindowHint和Qt::WA_TranslucentBackground(去掉标题栏,背景透明)。2:重载程序的鼠标事件(移动程序)和键盘事件(模拟投票和退出)。3:根据投票结果,在paintEvent函数中画原创 2012-05-27 21:39:44 · 10181 阅读 · 0 评论 -
QT:使用“状态模式”绘制界面
QT与很多GUI库不同(如MFC),它不能随时随地地在界面上画图,只能在界面类的painterEvent中画图,如此一来,想在绘制QT界面时使用状态模式(GOF的23种设计模式之一)就有点困难了,作为解决方案,我先把要界面上的图片绘制在一张图片上(QPixmap),然后再在painterEvent中将Pixmap“画”到界面上。以下是这种方法的一个小例子。截图:源代原创 2012-06-04 21:42:53 · 3761 阅读 · 0 评论 -
QT:“下载速度柱状图”的模拟实现
不知是哪个版本的迅雷,有个“下载速度柱状图”的小界面,我比较喜欢(只不过最新版本的迅雷却没了),所以决定来山寨一个。当然,这个山寨品不能下载文件,呵呵。思路:1:将界面的背景涂成黑色2:每隔0.1秒就产生一个随机数,将它们添加到一个容器中3:重载paintEvent函数,,从界面的右边开始,依次将容器中的元素按倒序画出来(每个数据就是一个柱形)截图:原创 2012-05-20 23:14:44 · 3010 阅读 · 0 评论 -
QT:程序忙碌时的进度条
当程序在执行一项(或多项)耗时比较久的操作时,界面总要有一点东西告诉用户“程序还在运行中”,那么,一个“没有终点”的进度条就是你需要的了。PS:最好把耗时的操作扔到一个子线程中去,以免他阻塞了界面线程,造成程序卡死的假象。思路:程序很简单,一个进度条,一个定时器就足够了。截图:源代码:#include #include class Wait原创 2012-06-14 22:03:43 · 12480 阅读 · 1 评论 -
QT:界面切换之飞入飞出
RT,用QT实现的一个简单动画,比较简单所以,直接上代码,呵呵。//tqt.h#ifndef TQT_H_#define TQT_H_#include #include class Widget : public QWidget{ Q_OBJECTprivate: QFrame *frame[10]; QPushButton *prevButton;原创 2011-10-10 12:28:43 · 10037 阅读 · 13 评论 -
QT:轻松获取网页源码
获取网页源码的小例子,代码很简单,就不多作解释了。不过一定要注意网页的编码问题,否则会出现乱码的!!!#include #include //网页地址 const QString URLSTR = "http://www.csdn.net/"; //储存网页代码的文件 const QString FILE_NAME = "code.原创 2012-01-14 10:28:39 · 10247 阅读 · 1 评论 -
QT:窗口最小化时显示一个小浮标
有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能。PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔。。。思路:1:制作一个由一个小图标组成的,可点击,可拖动,背景透明的Widget2:重载主窗口(在此例子中是QLabel)的changeEvent(详情见代码)截图:(浅绿色原创 2012-07-18 23:20:19 · 6019 阅读 · 1 评论 -
QT:在QTableView中使用各种自定义委托
QT的MVC(View/Delegate)模型十分强大,可以利用各种控件来对表格的输入进行限制,不过我以前一直没有过,这几天研究了一下,写个小例子,希望大家喜欢。 如果看不懂这个例子,请先看QT的自带例子:http://qt-project.org/doc/qt-4.8/itemviews-spinboxdelegate.html思路:1:为每一列定义委托:A:第原创 2012-07-16 23:08:05 · 10561 阅读 · 2 评论 -
QT:日期时间编辑器MyDateTimeEdit
QT自带的QDateTimeEdit并不是很好用,所以我写了一个基于六个QComboBox的DateTimeWidget,感觉上比QDateTimeEdit好用多了,希望大家喜欢。思路:1:建立6个QComboBox,分别用来储存年月日时分秒,还有5个QLabel,用来作它们的分隔符。2:每个月的天数会随着年份数和月份数变化,所以表示日期的QComboBox的内容也要发生相应的变化原创 2012-04-17 21:54:08 · 8236 阅读 · 3 评论 -
QT:Qsocket长连接的实现(单线程服务器)
废话少说:直接上代码代码功能:客户端先向服务发送一个字符串,服务器收到后,再向客户端发送一个同样的字符串(回射字符串)这个DEMO的服务器端已经在2012-2-14大幅度更新了,之前的程序存在有严重的问题(内存泄露,不释放端口。。。),我也是新手,请大家见谅,如果大家发现这个DEMO还有什么问题,欢迎留言和建议。大家共同学习。源代码://服务器端 /原创 2011-09-19 11:54:33 · 7443 阅读 · 14 评论 -
QT:不规则窗口的实现
主要思路:1:将窗体设为Qt::FramelessWindowHint(去掉标题栏)。2:用一幅有部分区域是透明的图片作为程序的界面,并将图片透明的地方设为穿透。3:重载程序的鼠标事件。运行时截图(浅绿色的是桌面背景)源代码:#include class IrregularWidget : public QWidget {原创 2011-12-08 20:16:57 · 16785 阅读 · 6 评论 -
QT:IP地址输入框的实现
输入IP地址是一个很常用的功能,但QT并没有相对应的控件,我只好自己写一个了(类似于MFC的CIPAddressCtrl)。主要思路:1:建立4个QSpinBox输入框和3个QLabel,并排列好。2:将4个输入框的输入范围设为0~2553:去掉QSpinBox的上下按钮,将文字设为居中显示。4:如果某个输入框得到了输入焦点,则将它们设为全选状态;如果输入框内的字符为0原创 2011-12-13 20:54:54 · 18617 阅读 · 5 评论 -
QT:图片按钮(改进版)
之前我写过一个可以直接显示图片的Button: http://blog.csdn.net/aaa20090987/article/details/6789380当时为了方便,直接用QFrame作为它的基类,结果(布局,使用等)十分不方便,还是老老实实地用 QAbstractButton 作为基类,再用paintEvent来画图吧//tqt.h#ifndef TQT_H_原创 2011-09-28 15:59:22 · 6266 阅读 · 0 评论 -
QT:利用正则表达式查找文本
几个G大的word2007竟然不支持用正则表达式查找文本,汗。。。唉,只好自己来写了一个了(幸亏这个程序不是很难,呵呵)不说了,直接上代码.#include //要使用的正则表达式const QString PATTERN_STRING = "a.*a";//QRegExp::cap的参数const int NTH = 0;int main(int argc,原创 2011-10-28 15:54:24 · 5748 阅读 · 2 评论 -
QT:有序排放多个按钮并处理它们的信号
像QQ的好友列表那样排列多个按钮是一项很不错的技术,使用QToolBox可以简单地实现这个需求,而运用QT的QSignalMapper类又可以方便地处理大量由不同控件发出的信号,以下是基于这两技术的一个小例子。思路:1:创建多个按钮(或其他控件),并将它们放到一个group里去。2:将按钮的clicked信号连接到signalmapper中去,并设置它们的“信号转换规则。3原创 2012-01-05 21:05:15 · 7253 阅读 · 3 评论 -
程序单例化
用QT实现程序的单例化有很多方法,但我觉得最方便,最实用的还是以下的这一种。以下是一个例子程序:#include #include #include #include int main(int argc, char **argv){ QApplication app(argc, argv); QSharedMemory *shareMem = new QSha原创 2011-07-26 16:34:42 · 1862 阅读 · 0 评论 -
最简单的显示图片方法
QT没有直接可以显示图片的专用控件,因此在控件上显示图片有点麻烦。但间接显示图片的方法有很多,下面就介绍最简单的一种(支持拉伸,自适应大小)#include int main(int argc, char **argv) { QApplication app(argc, argv); QFrame *frame = new QFrame原创 2011-08-06 10:30:48 · 11409 阅读 · 0 评论 -
GUI(主)线程与子线程之间的通信
在主线程上,可以控制子线程启动,停止,清零如果子线程启动的话,每一秒钟会向主线程发送一个数字,让主线程更新界面上的数字。程序截图:上代码:#include #include #include class Thread : public QThread { Q_OBJECT private: int numbe原创 2011-08-12 14:59:14 · 10947 阅读 · 6 评论 -
无法关闭的QT程序
做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难,其实它并不难,只要让程序在关闭时启动它自身就可以了。上代码:#include class Temp : public QWidget { Q_OBJECT private: QLabel *label; protected: void closeEvent(原创 2011-08-20 12:18:32 · 3106 阅读 · 0 评论 -
程序运行时改变语言
程序很简单,就不解释了,呵呵//tqt.h#ifndef TQT_H_#define TQT_H_#include #include //QT动态加载(运行时改变)语言的例子class Dialog : public QDialog{ Q_OBJECTprivate: QLabel *textLabel; QLabel *languageLabel; Q原创 2011-09-02 10:15:42 · 1515 阅读 · 0 评论 -
双击时不运行单击事件
思路很简单,就是加一个延时,判断在特定时间内是否有第二个鼠标事件//tqt.h#ifndef TQT_H_#define TQT_H_#include #include class ClickedLabel : public QLabel{ Q_OBJECTprivate: int press; //QTimer *timer;protected: vo原创 2011-09-02 10:19:12 · 1833 阅读 · 0 评论 -
QT:Qsocket长连接的实现(多线程服务器)
废话少说:直接上代码PS:为了减少代码量,这里忽略了链接出错时的错误处理//服务器端//dialog.h#ifndef DIALOG_H#define DIALOG_H#include #include #include "fortuneserver.h"class Dialog : public QDialog{ Q_OBJECTpublic:原创 2011-09-19 12:00:43 · 15115 阅读 · 14 评论 -
QT:多线程下载文件
这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器会对总下载线程进行平均分配。不难理解,如果你线程多的话,那下载的越快。现流行的下载软件都支持多线程。思路:1:用阻塞的方式获取目标地址的HTTP头部,得到目标文件的大小。2:算出每原创 2012-01-31 20:47:28 · 8026 阅读 · 19 评论