2012年(1008)
分类:
2012-08-01 11:07:59
原文地址:信号和槽实例 作者:luozhiyong131
/*
* QT第一个简单实例
* 测试平台环境是否安装好
* 2011-8-23
*/
/* 包含QApplication类的定义, 在每一个使用QT的应用程序中必须用一个QApplication对象。 QApplication管理了各种各样的广泛资源,比如默认的字体和光标*/
#include
#include
/* main函数是程序的入口。 几乎在使用Qt的所有情况下,main只需要在把控制转交给QT库之前执行一些初始化然后QT库通过事件来向程序告知用户的行为*/
int main(int argc, char *argv[])
{
/* app是这个程序的QApplication.它在这里被创建并且处理这好处费命令行变量,在任何Qt窗口系统部件被使用之前创建QApplication对象是必须的 */
QApplication app(argc, argv);
QLabel *label = new QLabel("Lzy");
label->resize(200,30);
label->show(); /*当创建一个窗口部件的时候,它是不可见的。你必须调用show()来使它变为可见的*/
/*这里就是main()把它控制转交给Qt,并且当应用程序退出的时候exec()就会返回。
在exec中,QT接受并处理用户和系统的事件并且把它们传递给适当的窗口部分*/
return app.exec();
}
/*
* 信号和槽
* 信号:当对象的内部状态发生改变,信号被发射
* 槽:可以被信号连接
* Lzy 2011-8-23
*/
#include
#include "foo.h"
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
FOO a, b;
//信号与槽连接
QObject::connect(&a, SIGNAL(valuechanged(int)), &b, SLOT(setvalue(int)));
a.setvalue(3);
qDebug()<<b.value();
return 0;
}
#ifndef FOO_H
#define FOO_H
#include
class FOO : public QObject
{
Q_OBJECT //所有包含信号与槽的类必须在它们的程序中声明
public:
int value(){return val;}
signals:
void valuechanged(int i); //信号
public slots: //槽
void setvalue(int i){val = i; emit valuechanged(val);}//信号发射
private:
int val;
};
#endif // FOO_H
/*
* 开发Qt程序的基本流程和编译运行方式
* 信号和槽机制
* Lzy 2011-8-23
*/
#include
#include
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton b("lzy");
b.show();
QObject::connect(&b,SIGNAL(clicked()),&app, SLOT(quit()));
return app.exec();
}