赞助

QT connectSlotsByName不用connent就会触发槽函数

工作中没有小事:点石成金,滴水成河,只有认真对待自己所做的一切事情,才能克服万难,取得成功。

转载:https://blog.csdn.net/hellokandy/article/details/105100563

在项目开发中,一点开发经验总结。

使用VS的QT助手生成测试工程的时候,在自动生成的ui_XXXXXX.h中,在setupUi函数的最后 QMetaObject::connectSlotsByName(XXXXX);有这样一句话,平时没怎么留意过,在此记录一下

查看帮助文档

 

 

 

大概意思是:

递归搜索给定对象的所有子对象,并将来自这些子对象的匹配信号连接到以下形式的对象插槽:

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

 

假设有一个类型为QPushButton的对象,对象ObjectName为button1,捕捉按钮的clicked()信号的槽是:

void on_button1_clicked();

就可以不用写connect函数来连接信号和槽,自动会触发槽函数。

具体步骤:

1. QPushButton* pBtn =new QPushButton();
   pBtn->setObjectName(QStringLiteral("button1"));

2.protected Q_SLOTS:
    void on_button1_clicked();

3.QMetaObject::connectSlotsByName(QPushButton);

 

posted @ 2022-07-14 22:12  车臣  阅读(148)  评论(0编辑  收藏  举报