Qt5.5.0+
✇易木残阳
We know nothing about the world. I'm more than a Qter.
open source、sharing、free.
展开
-
Qt简史
Our Story A conversation. That’s all it took. An honest, open and frank discussion between two young developers – Haavard and Eirik – on a park bench in the rare sunshine of a Norwegian s原创 2017-07-10 15:28:25 · 719 阅读 · 0 评论 -
写在最前面
曾几何时,我还是一个对于Qt懵懂无知的少年,如今不知不觉间使用Qt也有两年多的时间了,对于Qt的一些常用模块也熟稔于心,于是便萌发了写一篇关于Qt的系列教程。但是奈何限于精力有限,一直迟迟没有下笔。现在恰逢端午,正好有些许空闲时间,于是决定耐下心来写这篇系列文章,也就当练练笔吧,好久没动过笔,文笔已然生疏拙劣。在开篇之前,先说明几件事:首先,感谢国内的一些Qt大神(霍亚飞,安晓辉,王亮,蒋彩阳等一原创 2017-05-27 09:35:38 · 439 阅读 · 0 评论 -
基于Qt的简易通用开发框架
通用几大类: (1)窗体管理类: a.维护一张key-window键值对表。 b.窗体样式表的设定。 c. 采用工厂方法开放一个返回值类型为基类窗口类型的指针参数为想要创建的枚举类型的窗体获取接口用来负责窗体统一创建和获取。 d.采用deleteLater方法开放一个接口负责窗体的统一销毁。 e.独立窗体之间信号与槽的断开连接和连接等等。 (2)内存数据管理类: 保存由调用业务管原创 2017-07-14 17:35:01 · 4174 阅读 · 1 评论 -
Qt5.5.0 框架常用模块纲要
写在最前面Qt简史Qt开发环境搭建配置以及编译运行方式1-1 Qt开发环境搭建1-2 Qt配置pro文件以及第三方库1-3 Qt编译运行方式Qt基础模块2-1 Core2-1-1 元对象系统2-1-1-1 元对象2-1-1-2 元类型之Q_DECLARE_METATYPE2-1-1-3 元类型之qRegisterMetaType2-1-2 属性系统2-1-3 对象模型2-原创 2017-05-26 16:03:08 · 3017 阅读 · 0 评论 -
Qt之如何在Qt Creator检索源代码
首先确保下载Qt源码Src文件。以下是具体步骤,但是此种方法不能直接通过ctrl直接跳转,需要通过检索器查看源代码。原创 2021-04-02 11:29:19 · 1472 阅读 · 0 评论 -
关于Qt Error: dependent ‘.h‘ does not exist问题解决
如果是在控件提升的情况下出现该问题,可能是提升控件的路径不对引起,有两种解决方案:一种是在提升地方以相对pro文件路径方式加入,另外一种是在pro文件加入INCLUDEPATH原创 2021-01-27 14:59:35 · 4497 阅读 · 1 评论 -
Qt之维护工具MaintenanceTool.exe 使用(获取镜像地址实测无效)
Qt 维护工具MaintenanceTool.exe 使用转载 2020-11-12 11:42:39 · 2092 阅读 · 0 评论 -
Qt开发环境搭建
Qt开发环境搭建分为两种方式,一种是基于vc编译器的msvc版本,另外一种是基于gcc(g++)的mingw版本,前者常用于windows系统,后者常用于linux系统,如果选择前者的话,还需另外安装qt-vs-addin,以便vs使用Qt Designer插件进行界面开发。另外Qt creator本身并没有自带调试器,需要自行下载安装包,并且调试很慢,这是很多Qt开发者诟病的地方,不过有一点值得一原创 2017-05-27 10:28:57 · 916 阅读 · 0 评论 -
Qt配置pro文件以及第三方库
qmake 变量 含义 例子 QT 加入库模块 Qt += core TARGET 指定程序文件名,如果不指定,自动设置为项目名 TARGET = filename TEMPLATE 模版设置:app(默认);subdirs; lib TEMPLATE = subdirs SOURCES 指定源文件 SOURCES += main.cpp\ w原创 2017-05-27 10:51:31 · 4891 阅读 · 0 评论 -
Qt编译运行方式
Qt编译运行方式无非有两种,一种是用Qt Creator开发环境,另外一种是命令行。 使用第一种方式不用多说,下面讲解的是使用命令行进行编译运行的方式。 1.拷贝D:\Qt\Qt5.5.0_32\5.5\msvc2013\bin\qtenv2.bat文件至本目录下(视个人Qt安装路径而定)。 2.拷贝C:\Program Files (x86)\Microsoft Visual Studio原创 2017-05-30 23:03:45 · 980 阅读 · 0 评论 -
元对象
#include <QDebug>//#include <QObject>//#include <QMetaObject>#include <QMetaMethod>int main(int argc, char *argv[]){ QObject obj; const QMetaObject *metaObj = obj.metaObject(); qDebug()原创 2017-05-31 14:21:56 · 621 阅读 · 0 评论 -
元类型之qRegisterMetaType
紧着上一篇博客,如果需要跨线程操作自定义数据类型,那么在Q_DECLARE_METATYPE基础之上,还需要用qRegisterMetaType<>()进行注册。原创 2017-05-31 14:35:33 · 714 阅读 · 0 评论 -
元类型之Q_DECLARE_METATYPE
#include <QMetaType>#include <QDebug>struct Struct1{ int a; double b;};typedef struct{ Struct1 s; int c;}Struct2;struct Struct3{ int a; double b; operator QVariant() co原创 2017-05-31 14:32:40 · 1165 阅读 · 0 评论 -
属性系统
Q_PROPERTY原创 2017-05-31 14:47:44 · 1224 阅读 · 0 评论 -
内存异常
#include <QApplication>#include <QWidget>#include <QPushButton>int main(int argc, char *argv[]){ QApplication a(argc, argv); //correct QWidget window; QPushButton quit("Quit", &window)原创 2017-05-31 14:56:11 · 389 阅读 · 0 评论 -
对象模型
对象模型原创 2017-05-31 14:56:44 · 315 阅读 · 0 评论 -
信号与槽简易实现方式
信号与槽简易实现方式转载 2017-05-31 15:18:16 · 661 阅读 · 0 评论 -
信号与槽对于lambda的支持
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>////全局函数//void globalFun(QString title)//{// qDebug() << "globalFun: " << title;//}namespace Ui {class Widget;}class原创 2017-05-31 15:16:32 · 704 阅读 · 0 评论 -
信号与槽在父子类之间传递以及执行顺序
executesequence.h#ifndef EXECUTESEQUENCE_H#define EXECUTESEQUENCE_H#include <QObject>class Parent : public QObject{ Q_OBJECTpublic: explicit Parent(QObject *parent = 0); virtual ~Parent(原创 2017-05-31 15:00:36 · 559 阅读 · 0 评论 -
信号与槽连接方式(同步和异步)
事先声明:此篇博客非完全原创一. 同步 synchronous.h#ifndef SYNC_H#define SYNC_H#include <QObject>#include <QDebug>class MyTestA : public QObject{ Q_OBJECTpublic: void emitSignal() { signalMyTest原创 2017-05-31 15:13:24 · 3387 阅读 · 0 评论 -
Qt简易通用开发框架
Qt简易通用开发框架资源下载原创 2017-05-31 16:24:18 · 3632 阅读 · 0 评论 -
线程使用方法之moveToThread
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget();priv原创 2017-06-01 10:04:05 · 2401 阅读 · 0 评论 -
线程使用之互斥量
mutex.h#include <QThread>class Thread_Mutex : public QThread{public: Thread_Mutex(); void setMessage(QString msg);protected: void run();private: QString message; static QMutex mute原创 2017-06-01 10:10:08 · 337 阅读 · 0 评论 -
线程使用之读写锁
readwritelock.h#include <QThread>class ReadThread : public QThread{public: ReadThread();protected: void run();};class WriteThread : public QThread{public: WriteThread();protected:原创 2017-06-01 10:13:00 · 363 阅读 · 0 评论 -
线程使用之条件等待模拟生产者消费者
producer_customer.h#include <QThread>class Producer : public QThread{public: Producer();protected: void run();};class Customer : public QThread{public: Customer();protected: void原创 2017-06-01 10:16:52 · 339 阅读 · 0 评论 -
隐式共享
隐式共享的目的:最大化资源利用最小化拷贝转载 2017-06-01 10:32:43 · 443 阅读 · 0 评论 -
文件
一:文件拷贝widget.h#include <QWidget>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget();public: // 批量拷贝文件 void原创 2017-06-01 10:44:47 · 322 阅读 · 0 评论 -
流
void main(){ QString log = "log.xml"; QFile logFile(log); if(!logFile.open(QIODevice::ReadWrite | QIODevice::Text)) { logFile.close(); return; } // encoding=\"UTF原创 2017-06-01 11:08:54 · 283 阅读 · 0 评论 -
设置
widget.h#include <QWidget>#include <QSettings>#include <string>using std::string;typedef struct{ string ip; int port;}ServerSetting;namespace Ui {class Widget;}class Widget : public QWi原创 2017-06-01 11:21:29 · 372 阅读 · 0 评论 -
线程使用方法之run
thread.h#ifndef THREAD_H#define THREAD_H#include <QThread>class Thread : public QThread{ Q_OBJECTpublic: explicit Thread();private: void run();signals: void sendCloseFlag(int);};#end原创 2017-06-01 09:33:34 · 769 阅读 · 0 评论 -
进程
widget.h#include <QMainWindow>#include <QProcess>namespace Ui { class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~Ma原创 2017-06-01 11:39:27 · 323 阅读 · 0 评论 -
库
一:动态库 1.创建SharedLibrary.proQT += widgetsTARGET = SharedLibraryTEMPLATE = libDEFINES += SHAREDLIBRARY_LIBRARYSOURCES += sharedlibrary.cppHEADERS += sharedlibrary.h\sharedlibrary.h#include <Q转载 2017-06-01 11:53:11 · 311 阅读 · 0 评论 -
密码散列
Qt给出了一些常用加密算法,本文以Md5为例。main.cpp#include <QCoreApplication>#include <QCryptographicHash>#include <QDebug>void encrypt(){ QByteArray byte_array; byte_array.append("password"); QByteArray ha转载 2017-06-01 13:29:02 · 411 阅读 · 0 评论 -
绘画事件
#include "widget.h"#include "ui_widget.h"#include <QPainter>#pragma execution_character_set("utf-8")Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ u原创 2017-06-05 16:46:32 · 429 阅读 · 0 评论 -
鼠标事件
Widget::Widget(QMainWindow *parent) : QMainWindow(parent){ // QStatusBar *statusBar=new QStatusBar(this); setMouseTracking(true); //追踪}void Widget::mousePressEvent(QMouseEvent *event){原创 2017-06-05 16:47:41 · 286 阅读 · 0 评论 -
核心应用程序
为了使界面(未开辟新线程)在进行简短的计算或者时间等待的过程中保持响应,通常可以用 QCoreApplication::processEvents()处理。原创 2017-06-01 13:51:13 · 452 阅读 · 0 评论 -
XML文件读写
xmlstream.h#include <QXmlStreamWriter>#include <QXmlStreamReader>class XmlStream{public: XmlStream(); void writeXml(); void readXml(); void parseBlog(QXmlStreamReader &reader);};xml转载 2017-06-01 13:56:39 · 609 阅读 · 0 评论 -
全局热键
全局热键资源下载原创 2017-06-01 14:00:42 · 374 阅读 · 0 评论 -
正则表达式
QRegExp reg(“[A-Za-z]”); QRegExpValidator *validator = new QRegExpValidator(reg); //QIntValidator *validator = new QIntValidator(0, 65535); QLineEdit lineEdit; lineEdit.setValidator(validator );原创 2017-06-01 14:10:34 · 258 阅读 · 0 评论 -
时间
#include <QTime>#include <QDebug>int main(int argc, char *argv[]){ QTime time; time.start(); for( ; ; ) { if( 1000 == time.elapsed()) //break; {原创 2017-06-01 14:11:59 · 289 阅读 · 0 评论