QT中代码中与设计器中控件信号与SLOT连接

54 篇文章 1 订阅
13 篇文章 0 订阅

 

双击testqt.ui

 

 

托一个push button到窗体中,双击,可以输入字符

 

 

按F4或 menu->edit->edit signals/slots 定义SLOT

 

选择已定义好的SLOT,点确定就可以进行关联了。

定义自定义SLOT:

点上面对话框中的EDIT按钮,弹出:

 

注意这里自定义的slot必须是

on_<object name>_<signal name>(<signal parameters>)

格式。

 

 

 

然后再在testqt.h头文件中加入下面声明:

     public slots:

     void on_testQt_clicked ();

在testqt.cpp中加入函数实现:

void testQt::on_testQt_clicked ()

{

     QMessageBox msg;

     msg.setText("ok");

     msg.exec();  //模式对话框,show显示非模式对话框

 

}

 

编译后,你可以在ui_testqt.h头文件中看到

  QObject::connect(pushButton,SIGNAL(clicked()),testQtClass,SLOT(on_testQt_clicked ()));

QMetaObject::connectSlotsByName(testQtClass);

例如UI里新建了一个openButton,在.h文件里声明void on_openButton_clicked()函数并在cpp文件里添加这个函数的定义后,seupUi()就可以自动将openButton的clicked信号与我们定义的slot函数联系在一起了!

我们的.ui文件自动生成的ui_mainwindow.h文件里的代码总会有一句:

 QMetaObject::connectSlotsByName(MainWindowClass);

它就是用来自动识别我们所有界面控件的信号槽的,但必须是以下面的格式。

void QMetaObject::connectSlotsByName ( QObject * object ) [static]

 

Searches recursively for all child objects of the given object, and connects matching signals from them to slots of object that follow the following form:

public slots:

void on_<object name>_<signal name>(<signal parameters>);

Let's assume our object has a child object of type QPushButton with the object name button1. The slot to catch the button's clicked() signal would be:

 

void on_button1_clicked();

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值