给几个参考文章:
http://stackoverflow.com/questions/9957195/updating-gui-elements-in-multithreaded-pyqt
http://stackoverflow.com/questions/2585442/sending-custom-pyqt-signals
http://stackoverflow.com/questions/14090353/sending-messages-between-two-widgets-using-signals-and-slots
http://themkbytes.blogspot.com/2012/06/pyqt-qthread-signal-gui-examples.html
Tag: Qt
本文转载自: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();
}
程序运行截图:
在Qt中如何调用外部程序、显示输出
http://1.johnhome.sinaapp.com/?p=205
list<<“-q85″<<“-q85″;
QProcess::startDetached(“a.exe”,list);
connect(pProces, SIGNAL(readyRead()),this, SLOT(on_read()));
QStringList list;
pProces->start(“a.exe”, list);
slot 函数:
{
QProcess *pProces = (QProcess *)sender();
QString result = pProces->readAll();
QMessageBox::warning(NULL, “”, result);
}
来源: <http://tuzhaoliang.blog.163.com/blog/static/21008112620128215757737/>
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 “;
}
枚举值 | 描述 |
QIODevice::NotOpen |
未打开 |
QIODevice::ReadOnly |
以只读方式打开 |
QIODevice::WriteOnly |
以只写方式打开 |
QIODevice::ReadWrite |
以读写方式打开 |
QIODevice::Append |
以追加的方式打开,新增加的内容将被追加到文件末尾 |
QIODevice::Truncate |
以重写的方式打开,在写入新的数据时会将游标设置在文件开头 |
QIODevice::Text |
在读取时,将行结束符转换成 n;在写入时,将行结束符转换成本地格式,例如 Win32 平台上是 rn |
QIODevice::Unbuffered |
忽略缓存 |
摘自http://www.devbean.net/2013/01/qt-study-road-2-text-file-io/
如图
http://blog.csdn.net/fm0517/article/details/5503575
反正就是差不多的问题,我在不同类之间使用显式connect连接,然后就有这么个东西跑出来了..
后来发现了这篇文章果然是这个原因
上面大概就是说:用VistalStudio里的QtEditer可以自动调用Qt中“connectSlotsByName”即“按空间名称关联槽”的方式进行关联,对应的函数必须写成“on_控件名_信号名”的格式;或者也可以通过connet函数人为显式地将信号和槽关联起来。但是,如果采用显式connect的方法的同时,又将槽函数的名字起成了“on_控件名_信号名”的格式,那么就会在运行时弹出“QMetaObject::connectSlotsByName: No matching signal for”的警告了!