qt布局调用自定义函数_QT 自定义函数 自定义信号和槽

使用自定义的信号和槽,需要注意以下几点:1、类的声明和实现分别放在.h和.cpp文件中;2、类声明中包含Q_OBJECT宏;3、信号只要声明不要设计其的实现函数;4、发射信号用emit关键字;5、自定义槽的实现与普通成员函数的实现一样。创建用户自定义的信号与槽的具体步骤:首先你需要在类声明中声明自定义的信号和槽。在关键字public slots:下声明自定义槽;在signals:关键字下声明自定义的信号。如下例所示:class MyMainWindow : public QWidget   //在這裡繼承,派生{Q_OBJECTpublic:void MyMainWindow();//自定義函數void SetValue(int);signals:void ValueChanged(int);//自定義信號public slots:void ChangeValue(int);//自定義槽};正如你可能猜想到的,只有当一个新的值传递给SetValue()函数时,SetValue()函数才应该调用ValueChanged()信号。之后,通过将ValueChanged()信号连接到ChangeValue()槽,使得当有新值传递给SetValue()函数时,能够引起数值的变化。多数情况下,这是不必要的,但它演示了信号的使用方法。SetValue()函数可以像下面格式实现:void MyMainWindow::SetValue(int value){if(value!=oldvalue){oldvalue=value;emit ValueChanged(value);}}如你看到的只有,当新值与旧值不同时才发射ValueChanged()信号,且oldvalue将被修改为value。应注意的是,信号与槽一类的普通函数不同,它只能使用emit关键字发射。ChangeValue()可定义为:void MyMainWindow::ChangeValue(int value){FunctionForChangingTheValue(value);}在这段代码中,调用 FunctionForChangingTheValue( )函数去修改数据。你需要做的最后一件事是将信号和槽连接起来:connect(this,SIGNAL(ValueChanged(int)),this,SLOT(ChangeValue(int)));这个例子的功能是当调用SetValue()函数时,检查新值是否等于旧值。如果不等,则发射ValueChanged()信号,又因为 ValueChanged()信号被连接到ChangeValue槽,因此当发射ValueChanged()信号时将执行ChangeValue() 槽。之后,ChangeValue()槽调用FunctionForChangingTheValue()函数去修改实际数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值