初学Qt之--带参数的信号和槽的实现(入门级)

61 篇文章 1 订阅
60 篇文章 0 订阅

初次接触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后


谢谢围观,如有改进之处,敬请留言。

(----------完---------)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值