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();
}

你可能感兴趣的:(QT,C语言,QT)