亭台六七座
大圣,此去欲何?踏南天,碎凌霄。若一去不回...?便一去不回!
展开
-
foreach循环
QStringList listTemp; QString strTemp1; QString strTemp2; listTemp.append("aaa"); listTemp.append("bbb"); listTemp.append("ccc"); foreach(strTemp1,listTemp) { strT原创 2017-07-15 07:44:05 · 345 阅读 · 0 评论 -
C++线程的几种调用方式
#include#includeusing namespace std;class A{public: void f(int x,char c){} int operator()(int N) { return 0; }};void foo(int x){}int main(){ A a; thread t1(a, 6); //传递a的拷贝给子线程 thread原创 2017-07-21 15:27:22 · 1963 阅读 · 0 评论 -
QT读写配置文件(.ini)
INIINI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。INI文件是Initialization File的缩写,即初始化文件。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的转载 2017-10-12 21:43:29 · 1792 阅读 · 0 评论 -
qt触摸屏隐藏鼠标指针
方法1:运行加参数-nomouse 方法2:QWidget::setCursor(QCursor(Qt::BlankCursor)例:this->setCursor(Qt::BlankCurror);只希望在某个QWidget(或QDialog等)控件上不出现鼠标指针。其他窗口仍会显示鼠标指针。 方法3:main函数中调用QApplication::转载 2017-10-14 23:22:15 · 2451 阅读 · 0 评论 -
C++开发者都应该使用的10个C++11特性
在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。auto在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符转载 2017-10-25 17:17:36 · 277 阅读 · 0 评论 -
Qt5信号和槽机制
信号槽是 Qt 框架引以为豪的机制之一。熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号( signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接( connect)函数,意思是,用自己的一个函数(称为槽( sl转载 2017-10-25 17:28:00 · 401 阅读 · 0 评论 -
获取程序所在路径、用户目录路径、临时文件夹等特殊路径
经常我们的程序中需要访问一些特殊的路径,比如程序所在的路径、用户目录路径、临时文件夹等。在 Qt 中实现这几个功能所用的方法虽然都不难,但是各不相同,每次用到时还要现去查,很不方便。因此就写了这篇博客,把这几种需求的实现方式总结了一下。算是个备忘录吧。程序所在路径获取程序所在路径,QCoreApplication 类里就实现了相关的功能:QString QCoreApplica转载 2017-11-18 11:12:50 · 2478 阅读 · 0 评论 -
#pragma命令详解
每种C和C++的实现支持对其宿主机或操作系统唯一的功能。例如,一些程序需要精确控制超出数据所在的储存空间,或着控制特定函数接受参数的方式。#pragma指示使每个编译程序在保留C和C++语言的整体兼容性时提供不同机器和操作系统特定的功能。编译指示被定义为机器或操作系统特定的,并且通常每种编译程序是不同的。语法:#pragma token_string“token_string”是一系列转载 2017-11-16 12:20:19 · 104612 阅读 · 5 评论 -
动态数组的设计
array_vector.h#ifndef _ARRAY_VECTOR_#define _ARRAY_VECTOR_ //防止重复包含/* C/C++里面内存到底可以分配在那些位置? 1:参数 局部变量 分配在栈上 2:静态变量 全局变量 分配在数据段上 3:使用malloc free new delete在运行期间像操作系统申请的内存,然后不用了,又释放内存,为堆上原创 2017-12-08 22:17:27 · 490 阅读 · 0 评论 -
#import 指令 (C++)
已用于合并类型库中的信息。该类型库的内容转换为C++类,主要描述COM接口。 #import "filename" [attributes] #import [attributes]例如: #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("E转载 2017-12-10 11:01:36 · 11752 阅读 · 0 评论 -
vc++中的import的使用
#import 指令1. C++中使用 COM 简单的方法是用 #import 导入 type library2. # import 指令将 COM 产生对应的 C++类别,可以用接近於VBScript和Visual Basic的语句操作 COM3. 使用 #import 命令就可以将该文件导入到我们的程式码中。type library 的内容将被转换为描述了 COM Interfac转载 2017-12-10 11:04:08 · 6349 阅读 · 0 评论 -
c++回调函数 callback
C++中实现回调机制的几种方式(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:[cpp] view plaincopytypedef转载 2017-12-03 12:49:39 · 372 阅读 · 0 评论 -
QT选择目录等常用文件/文件夹操作
QT 创建文件夹 bool QDir::mkdir ( const QString & dirName ) const创建一个子目录名为目录名。如果成功则返回TRUE,否则返回false。bool QDir::mkpath ( const QString & dirPath ) const创建该目录路径dirPath。该函数将创建所有的父目录中的各个子目转载 2017-11-25 08:46:53 · 1545 阅读 · 0 评论 -
C语言重载宏函数的小技巧
在写C/C++语言时我们经常会用到宏定义,宏函数就是带参数的宏定义(blablabla……省去背景介绍)。有时候我们会需要一个可以有多种参数版本的宏定义,例如:12#define MACRO_FUN(a) doSomethingWithOneArg(a)#define MACRO_FUN(a, b) doSomethingWithTwoArgs(a, b)但是宏定义不像正规函数转载 2017-12-04 23:54:38 · 6438 阅读 · 0 评论 -
Qt获取所有进程、终止某个进程
方法一: //Qt开源库, 通过QProcess启动系统命令“tasklist.exe”, 获取正在运行的进程 QProcess process; process.start("tasklist.exe"); if(process.waitForFinished()) { QByteArray result = process.readAl转载 2017-11-25 20:12:35 · 9637 阅读 · 0 评论 -
成员函数作为回调函数
原创 2017-12-07 15:36:24 · 363 阅读 · 0 评论 -
你不知道的21个Qt隐藏功能和技巧
Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能Q_ENUMS:对枚举对象进行反射(reflection)Q_SIGNAL:不需要signals关键字就可以将一个函数指定为singal函数Q_SLOT:不需要slots关键字就可以将一个函数指定为slot函数Q_FOREACH:Qt提供的关键字foreach在配置文件里面定义了no_keywor转载 2018-01-16 17:38:43 · 777 阅读 · 0 评论 -
Qt信号与槽
信号与槽是一种Qt特有的对象间通信的机制,是Qt区别于其他图形系统的基本特征。信号与槽之间是一种松散的连接关系,这种连接关系可以在程序运行时动态改变,这为Qt编程提供了极大的灵活性。 定义信号使用Qt的signals关键字。注意信号没有访问权限,实际上它们都是受保护权限的,也就是说只有定义信号的类自己及派生类才能发射这个信号。信号一般定义为无返回值的函数,这个函数不转载 2017-10-10 20:29:50 · 275 阅读 · 0 评论 -
在Qt中调用CMD命令
代码:[plain] view plain copyQProcess p(0); p.start("cmd", QStringList()p.waitForStarted(); p.waitForFinished(); QString strTemp=QString::fromLocal8Bit(p.readAllSta转载 2017-09-21 21:56:19 · 12545 阅读 · 1 评论 -
QPainter 画扇形
void Widget::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); painter.rotate(m_nRotationAngle); // 顺时针旋转坐标系 QRadialGradient转载 2017-09-21 18:22:23 · 6189 阅读 · 0 评论 -
Qt信号槽连接函数connect()的简单使用方法
1、connect使用指针connect(b2,&QPushButton::released,this,&MainWidget::mySlot); //【抬起】按钮b2时,修改按钮b2的标题2、使用lambda表达式 connect(b4,&QPushButton::released, [b4]() // mutable // 在此处添加mutabl原创 2017-07-21 22:07:59 · 27523 阅读 · 0 评论 -
[C++]前置声明和头文件
假设有一个Date类Date.hclass Date { private: int year, month, day; }; class Date {private: int year, month, day;};如果有个Task类的定义要用到Date类,有两种写法其一Task1.hclass D转载 2017-07-24 08:54:43 · 493 阅读 · 0 评论 -
如何使用前置声明取代包括头文件
这篇文章很大程度是受到Exceptional C++ (Hurb99)书中第四章 Compiler Firewalls and the Pimpl Idiom (编译器防火墙和Pimpl惯用法) 的启发,这一章讲述了减少编译时依赖的意义和一些惯用法,其实最为常用又无任何副作用的是使用前置声明来取代包括头文件。Item 26 的Guideline - "Never #include a转载 2017-07-24 09:00:51 · 298 阅读 · 0 评论 -
sizeof strlen wcslen tcslen 比较
sizeof strlen wcslen tcslen 都是取得字符串长度。 sizeof :取得字符串的字节长度,包含 '/0'。strlen:取得多字节字符串中字符长度,不包含 '/0'。wcslen:取得宽字节字符串中字符长度,不包含 '/0'。tcslen:取得宽字节/多字节字符串中字符长度,不包含 '/0'。 例如: WCH转载 2017-08-26 22:10:05 · 281 阅读 · 0 评论 -
Qt 坐标系统
1、move 移动位置 /*对于父窗口(主窗口),坐标系统相对于屏幕 * 原点:相对于屏幕左上角 * x:往右递增 * y:往下递增 */ move(100,100); //坐标相对于屏幕 /*子窗口,坐标系统相对于父窗口 * 原点:相对于窗口空白区域左上角(不包括边框) * x:往右递增 * y:往下原创 2017-09-15 17:36:39 · 390 阅读 · 0 评论 -
C++ auto自动类型
#include using namespace std;int main(){ //auto 定义类型 //typeid() 获取类型 auto a = 10; auto c = 'A'; auto s("hello"); cout << "a:" << a << endl; cout << "c:" << c << endl; cout << "s:" << s <<原创 2017-08-31 18:33:00 · 1327 阅读 · 0 评论 -
Qt获取时间戳
1.toTime_t()把2014年12月19日10:24:40这样的QDateTime的格式转变为1418955940这样的时间戳[cpp] view plain copyQDateTime time = QDateTime::currentDateTime(); //获取当前时间 int timeT = time.toTime_转载 2017-09-18 10:22:29 · 41730 阅读 · 0 评论 -
Qt 信号与槽 输出按钮被单击次数
方法一:右击按钮控件,选择【转到槽】,添加代码:void Widget::on_pushButton_clicked(){ static int i=0; ++i; qDebug()}方法二:在初始化代码中使用connect,并补充相关代码:connect(ui->pushButton,&QPushButton::clicked,this原创 2017-08-31 21:14:29 · 3553 阅读 · 0 评论 -
C++ Lambda表达式
//Lambda表达式,匿名函数对象 //C++11增加的新特性, 项目文件 //QT配合信号一起使用,非常方便 QPushButton *b4 =new QPushButton(this); b4->setText("Lambda表达式"); b4->move(150,150); // []代表把外部变量传进来,如果不传是不能被使用的原创 2017-08-31 21:21:58 · 271 阅读 · 0 评论 -
C++闭包示例
#include using namespace std;auto mpaip(int a, int b) { // 函数的返回值是一个函数 return [a, b](auto c) {return c(a, b); };}int first(int a, int b) { return a; }int second(int a, int b) { return b; }原创 2017-08-31 22:11:47 · 428 阅读 · 0 评论 -
C++ 计算struct结构体占用的长度
关于结构体和类所占用的长度计算方式介绍。[cpp] view plain copystruct A { char a[5]; int b; short int c; }structA; 在上例中,要计算 sizeof(a) 是多少?有两个原则:转载 2017-09-01 17:54:20 · 2341 阅读 · 0 评论 -
C++ struct 的长度对齐
结构体的sizeof的值并不是简单的将其中各个元素所占的字节相加,而是要考虑到存储空间的字节对齐问题结构体默认的字节对齐准则:1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;2. 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字符;3. 结构体的总大小为结构体最宽基本类型成员大小和编译转载 2017-09-01 19:35:16 · 393 阅读 · 0 评论 -
Qt生成随机数
1.生成随机数 生成随机数主要用到了函数qsrand和qrand,这两个函数在#include 中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qsrand(1),即系统默转载 2017-09-28 08:42:01 · 1043 阅读 · 0 评论 -
Qt之自定义界面(窗体缩放)
简述通过前两节内容,我们实现了自定义窗体的移动,以及自定义标题栏-用来显示窗体的图标、标题,以及控制窗体最小化、最大化、关闭。在这之后,我们还缺少窗体的缩放-当鼠标移动到窗体的边框-左、上、右、下、左上角、左下角、右上角、右下角时候,鼠标变为相应的样式,并且窗体可以随着鼠标拖动而进行放大、缩小。简述效果窗体缩放实现接口说明转载 2017-09-28 10:33:44 · 1316 阅读 · 0 评论 -
Qt之QuaZIP(zip压缩/解压缩)
简述QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开。Qt中提供了qCompress/qUncompress来进行文件的压缩与解压,但存在两个问题:无法很好地压缩/解压缩文件夹。只能将一个文件压缩为某种格式,压缩后的文件无法通过其转载 2017-09-20 14:06:35 · 1480 阅读 · 0 评论 -
Qt - 正确判断文件、文件夹是否存在的方法
一直对Qt的isFile、isDir、exists这几个方法感到混乱,不知道到底用哪个,网上搜了下资料,也是用这几个方法但是都没有对其深究,经过测试发现会存在问题,先看看下面的测试代码[cpp] view plain copy{ QFileInfo fi("C:/123"); // 目转载 2017-09-28 15:47:46 · 1258 阅读 · 0 评论 -
位运算之左移右移运算之详解
先看如下一段左移右移的代码及其结果:#include"stdio.h"char leftshift(char i, int n){ if(n 0) return -1; return in;}char rightshift(char i, int n){ if(n 0) return -1; return i>>n;}in转载 2017-09-21 17:04:30 · 7567 阅读 · 1 评论 -
Qt调用易语言编译的DLL文件
最近需要将易语言的现有函数封装为DLL文件供Qt调用,由于本人属于菜鸟,搞了好久。目前基本解决问题。现留个记号,以备后查。易语言代码:.子程序 l2g, , 公开, 农历转公历.参数 y_l.参数 m_l.参数 d_l.参数 l, 逻辑型.参数 y_g, , 参考.参数 m_g, , 参考.参数 d_g, , 参考.局部变量 gl, 日期时间型农历转公历 (y_l, m_l, d...原创 2018-04-07 18:15:21 · 1672 阅读 · 1 评论