初次接触Qt,由于只有C语言的基础,弄起来很是头疼。下面这个Qt带参数的信号与槽的实例仅供入门之用,高手免观(Qt 4.4.0 实现)
废话不多说,直接上代码:
/*********MyMainWindows.h**************/
#ifndef MYMAINWINDOWS_H_
#define MYMAINWINDOWS_H_
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
//申明一个MyMainWindows类,这个类用于实现窗体
class MyMainWindows:public QWidget
{
Q_OBJECT //Q_OBJECT是在定制信号和槽和必须包含的一条宏语句
public:
MyMainWindows(); //类构造函数(用于实现程序的主体部份)
public slots: //所有的槽函数都必须申明public slots语句内
void SlotTest(); //这个槽函数用于显应点击按钮时改变文本框内容
private:
QPushButton * pb; //申请一个按钮QPushButton
QLineEdit * ledit; //申请一个文本框ledit
QLabel * label; //申请一个文本标签label
signals: //所有信号都需要申明在signals语句内
void SigTest(QString text); //自定义的带参数的信号SigTest(QString text)。
};
#endif
/*************MyMainWindows.cpp****************/
#include "MyMainWindows.h"
MyMainWindows::MyMainWindows()
{
setGeometry(90,90,300,200);
pb = new QPushButton("Modify",this);
pb->setGeometry(10,10,100,20);
ledit = new QLineEdit("what's your name",this);
ledit->setGeometry(10,30,200,150);
label = new QLabel("I am a Label",this);
label->setGeometry(115,10,100,20);
connect(pb,SIGNAL(clicked()),this,SLOT(SlotTest()));
//连接自定义信号SigTest(QString)和QLineEdit中的预定义槽setText(QString)
connect(this,SIGNAL(SigTest(QString)),ledit,SLOT(setText(QString)));
}
//实现用于接受pb点击信号的槽
void MyMainWindows::SlotTest()
{
label->setText("clicked");
//发送自定义的信号,请注意信号的参数类型和个数要和槽一样
emit SigTest("Hello,I am Keyunchuan");
}
/**************Main.cpp**************/
#include <QApplication> //所有QT应用程序都要包含QApplication头文件
#include "MyMainWindows.h"
int main(int argc,char * argv[])
{
QApplication app(argc,argv); //申明一个QT应用程序对像app
MyMainWindows w; //申明我们实现MyMainWindows窗体对像 w.
w.show(); //显示这个w 窗体
return app.exec();
}
然后附上运行时截图:
点击pb后
谢谢围观,如有改进之处,敬请留言。
(----------完---------)