Categories
不学无术

Qt读写ini文件

本文转载自:http://blog.csdn.net/qiurisuixiang/article/details/7760828

一 背景

 

1 ini文件介绍

.ini 文件是Initialization File的缩写,即初始化文件。
除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。
 

2 ini文件格式

INI文件由节、键、值组成。

[section]
参数(键=值)
name=value
 
下面是一个ini文件的例子

[Section1 Name]   
KeyName1=value1   
KeyName2=value2   
...   
[Section2 Name]   
KeyName21=value21   
KeyName22=value22  

其中:[Section1 Name]用来表示一个段落。因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
注解:使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。
 
 

二 Qt写ini文件

 
#include 
#include 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   //Qt中使用QSettings类读写ini文件
   //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
   QSettings *configIniWrite = new QSettings("hahaya.ini", QSettings::IniFormat);
   //向ini文件中写入内容,setValue函数的两个参数是键值对
   //向ini文件的第一个节写入内容,ip节下的第一个参数
   configIniWrite->setValue("/ip/first", "192.168.0.1");
   //向ini文件的第一个节写入内容,ip节下的第二个参数
   configIniWrite->setValue("ip/second", "127.0.0.1");
   //向ini文件的第二个节写入内容,port节下的第一个参数
   configIniWrite->setValue("port/open", "2222");
   //写入完成后删除指针
   delete configIniWrite;
   return a.exec();
}

运行程序后,打开程序目录下的hahaya.ini文件,结果如下图所示:

 

三 Qt读ini文件

#include 
#include 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   //Qt中使用QSettings类读写ini文件
   //QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
   QSettings *configIniWrite = new QSettings("hahaya.ini", QSettings::IniFormat);
   //向ini文件中写入内容,setValue函数的两个参数是键值对
   //向ini文件的第一个节写入内容,ip节下的第一个参数
   configIniWrite->setValue("/ip/first", "192.168.0.1");
   //向ini文件的第一个节写入内容,ip节下的第二个参数
   configIniWrite->setValue("ip/second", "127.0.0.1");
   //向ini文件的第二个节写入内容,port节下的第一个参数
   configIniWrite->setValue("port/open", "2222");
   //写入完成后删除指针
   delete configIniWrite;
   return a.exec();
}

程序运行截图:

Categories
不学无术

计算机系统综合课程设计——miniIDE

学校里做的最后一个课设了吧,老师比较认真,自己选做了IDE的部分,然后就有了个奇形怪状的IDE(其实就是个文本编辑器我会乱说~)
QQ截图20131228191450Qt做的,快速开发嘛,反正丑陋的要命,目前还有一些BUG以及未完成的东西。
==========================================
功能

  • 查看、编辑 mif, c, asm文件
  • 有限的语法加亮功能:)
  • 使用内置的汇编器汇编ASM文件,输出是MIF(我们组力哥提供的asm汇编器)
  • 相当有限的智能提示功能

==========================================
源代码:将在项目验收结束后公布
软件:
release 20140101 http://pan.baidu.com/s/1dDBWRSl
release 20131228 http://pan.baidu.com/s/1hqJsibU
 
 

Categories
不学无术

在Qt中如何调用外部程序、显示输出

http://1.johnhome.sinaapp.com/?p=205

主要用QProcess类解决这个问题
         如执行a.exe, 带两个参数为 -z20,-q85
 第一种方法:使用QProcess类静态函数
QProcess::startDetached(const QString &program, const QStringList &argument)

 

或者
QProcess::execute(const QString &program, const QStringList &argument)
 startDetached 函数不会阻止进程, execute会阻止,即等到这个外部程序运行结束才继续执行本进程。
 
QStringList  list;
list<<“-q85″<<“-q85″;
QProcess::startDetached(“a.exe”,list);

 

QProcess::execute(“a.exe”,list);

 

 第二种方法:创建QProcess类,这种方法的好处是可以查看外部程序返回的数据,输出结果
QProcess *pProces = new QProcess(this);
connect(pProces, SIGNAL(readyRead()),this, SLOT(on_read()));
QStringList  list;
pProces->start(“a.exe”, list);

slot 函数:

void on_read()
{
QProcess *pProces = (QProcess *)sender();
QString result = pProces->readAll();
QMessageBox::warning(NULL, “”, result);
}

来源: <http://tuzhaoliang.blog.163.com/blog/static/21008112620128215757737/>

QProcess::startDetached(“ExternalExe/fileAmountMonitor/fileAmountMonitor.exe”,QStringList(),“ExternalExe/fileAmountMonitor”)

 

//启动外部程序,不产生阻塞
QProcess outerProcess;
outerProcess.start(“ExternalExe/hacker.Sys.Exec.WPddos.exe”);
if(!outerProcess.waitForStarted()){
QMessageBox::information (this, tr(“无法启动外部程序!”),
tr(“可能程序被破坏,请联系技术支持人员!”));
// return ;
}else{
qDebug()<<“outerProcess started”;
}
while(!outerProcess.waitForFinished(3000)){
// qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
qApp->processEvents();
if(outerProcess.state()==QProcess::NotRunning){
qDebug()<<“Error waitForFinish of siteInfoScanner.”;
}else if(outerProcess.state()==QProcess::Starting){
qDebug()<<“the siteInfoScanner is starting”;
}else if(outerProcess.state()==QProcess::Running){
qDebug()<<“the siteInfoScanner is running”;
}
//qDebug()<<”run in waitforfinish “;
}
Categories
不学无术

《人机情感交互》第二章笔记

https://app.yinxiang.com/shard/s17/sh/6664be3a-1771-45c6-b346-dc8be847ea34/788022bbf47860ec99fcb41530cb77aa

Categories
不学无术 木有技术

Android BASE64 编码/解码

http://developer.android.com/reference/android/util/Base64.html
http://hi.baidu.com/xxfaxy/item/4c44f6fd4539dd5cc8f33705
首先导入包
import android.util.Base64;
String 变量=android.util.Base64.encodeToString(字符串.getBytes(),Base64.DEFAULT);
也可简写为
String 变量=Base64.encodeToString(字符串.getBytes(),Base64.DEFAULT);
至于解码
byte b[]=android.util.Base64.decode(字符串,Base64.DEFAULT);
String 变量=new String(b);

byte b[]=android.util.Base64.decode(字符串,Base64.DEFAULT);
Categories
不学无术

Qt预设的几种颜色

如图

Categories
不学无术 木有技术

QMetaObject::connectSlotsByName: No matching signal for问题的解决方法

http://blog.csdn.net/fm0517/article/details/5503575
反正就是差不多的问题,我在不同类之间使用显式connect连接,然后就有这么个东西跑出来了..
后来发现了这篇文章果然是这个原因

上面大概就是说:用VistalStudio里的QtEditer可以自动调用Qt中“connectSlotsByName”即“按空间名称关联槽”的方式进行关联,对应的函数必须写成“on_控件名_信号名”的格式;或者也可以通过connet函数人为显式地将信号和槽关联起来。但是,如果采用显式connect的方法的同时,又将槽函数的名字起成了“on_控件名_信号名”的格式,那么就会在运行时弹出“QMetaObject::connectSlotsByName: No matching signal for”的警告了!

Categories
不学无术

正则表达式入门

很不错的网站:http://deerchao.net/tutorials/regex/regex.htm

Categories
不学无术 木有技术

PHP/ANDROID JSON传二进制数据 BASE64编码

来自以下两篇文章:
http://www.cnblogs.com/sqzzy/p/3291791.html
http://hi.baidu.com/xxfaxy/item/4c44f6fd4539dd5cc8f33705
 
今天在做手机项目中的表情模块。   后台:表情包的上传自动解压缩->各种封面的替换->表情的详细资料,提供表情包和单张表情的下载->统计表情下载的人数和人次  前台:开放下载 api接口。  难点:后台表情的图片二进制流和ios/安卓的交互。二进制流传递的问题  获取图片二进制流方法:$str  = file_get_contents(‘http://www.baidu.com/logo.gif’); //可以直接获取图片的二进制流,而且还是字符串类型  我们采用的是json传递的方式:如果json_encode($str); //会显示一个null  这时候的解决方案是:采用可逆的编码base64对二进制字节流进行编码转换  $base64 = base64_encode($str);  然后把这个组合成想要的格式进行json_encode();  和前台交互。所以在进行二进制流传递的时候,最好进行编码转换一下。首选 base64编码转换
 
============
首先导入包
import android.util.Base64;
String 变量=android.util.Base64.encodeToString(字符串.getBytes(),Base64.DEFAULT);
也可简写为
String 变量=Base64.encodeToString(字符串.getBytes(),Base64.DEFAULT);
至于解码
byte b[]=android.util.Base64.decode(字符串,Base64.DEFAULT);
String 变量=new String(b);

byte b[]=android.util.Base64.decode(字符串,Base64.DEFAULT);
Categories
不学无术

phpMyAdmin中设置外键Foreign Key

恩~最近在倒腾百度云,因为建表什么的不想输入命令,所以用了phpMyAdmin的界面~
创建好之后发现找不到怎么设外键的,于是谷歌了一下~
http://stackoverflow.com/questions/459312/setting-up-foreign-keys-in-phpmyadmin
这里有详尽的解释~另外看了几篇中文的~
总归是

  • 数据库类型貌似要设置成InnoDb才行(我也不知道是真是假)
  • 搞定之后在需要有外键的库底下找到Relation View,然后设置

外键的其他必要条件就不叨叨了~