初次接触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后
谢谢围观,如有改进之处,敬请留言。
(----------完---------)