Qt自定义槽函数

实例代码

#ifndef WIDGET_H
#define WIDGET_H


#include <QWidget>
#include <QPushButton>
class Widget : public QWidget
{
    Q_OBJECT


public:
    Widget(QWidget *parent = 0);
    ~Widget();
    void mySlot();
private:
    QPushButton button1;
    QPushButton* p_button2;


};


#endif // WIDGET_H```

#include “widget.h”
#include
#include <stdio.h>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
/*错误实例 以下方法创建的button无法再窗口中显示,因为构造函数这样创建窗口,控件生命周期在执行完构造函数后就没有了,会被自动析构掉
* 千万不要犯这样的错误
QPushButton button1;
button1.setParent(this);
button1.setText("_");
*/
button1.setParent(this);
button1.setText(“close”);
button1.move(100,100);

p_button2 = new QPushButton(this);
p_button2->setText("abc");
p_button2->move(200,200);
connect(&button1,&QPushButton::pressed,this,&Widget::close);
/*&button1:信号发出者,指针类型
 * &QPushButton::pressed:处理的信号,&发送者类名::信号名字
 * this::信号接收者
 * &Widget::close:槽函数,信号处理函数 &接收的类名::槽函数名字
 * /
/自定义槽,普通函数用法
 * Qt5:任意的成员函数,普通全局函数,静态函数
 * 槽函数需要和信号一致(参数,返回值)
 * 由于信号没有返回值,所以槽函数一定没有返回值
 */
connect(p_button2,&QPushButton::released,this,&Widget::mySlot);

}
void Widget::mySlot()
{
p_button2->setText(“123”);
}

Widget::~Widget()
{
if(p_button2 != nullptr)//注意c++11使用nullptr表示null;
{
delete p_button2;
p_button2 = nullptr;
}
}


#include “widget.h”
#include

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;//执行Widget的构造函数
w.show();

return a.exec();

}

Widget是主窗口,保存的有Subwindow的指针,可以直接操作;
subwindow是子窗口,由于子窗口没有主窗口指针,所以它需要给主窗口发送信号,然后主窗口在接收到信号后处理信号;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值