Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631864
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

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();

}

 

阅读(157) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~