VS和QT 编程中,解决控件的信号和槽

在使用QT CREATOR的时候如果要为某一个控件添加事件和对应的事件响应,方法是选中控件然后右键选择“转到槽”,但是如果在VS中编译QT项目时控件是没有这个选项的,这时候就要手动添加。步骤如下:

1)在.h文件中添加对应的信号与槽,如:

init_diag类的.h 文件中有个信号定义:可以在private ,public,protect任何区域

signals:

void start_can(int dev_num,int can_num,int can_brt,int mode);

在对应的父窗口的.h中有个槽函数定义:

private slots:
    void show_can_mesg(int dev_num,int can_num,int can_brt,int mode);

2)关联信号与槽:

connect(init_diag, SIGNAL(start_can(int, int, int, int )), this, SLOT(show_can_mesg(int , int , int , int)));

此处应该注意的是:信号与槽关联的时候只写书参数类型就可以,不要把变量也写出,写出变量就无法正确关联,程序运行不会报错,但是执行结果和预期的有差别

3)父窗口和子窗口用信号与槽实现信息交互的时候一定要注意,只有父窗口和子窗口都正确建立后才可以关联,否则编译不会出错,但是程序不能够按照预期的执行。正确示例1如下

QtGuiCAN::QtGuiCAN(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
   init_diag = new QtGuiClass(this);  //子窗口创建
   connect(init_diag, SIGNAL(start_can(int, int, int, int )), this, SLOT(show_can_mesg(int , int , int , int)));  //信号与槽关联

    test();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值