QT 之 connect

QT 有个强大的 信号槽机制,他的信号槽怎么关联起来,就通过这个connect。一下是个人在学习过程中遇到的几个问题,记录一下

问题描述:

今天在编译的时候发现报错:

error: no matching function for call to 'keyBoardForm::connect(keyBoardForm* const, const char*, inputMethod*&, const char*)'

原因分析:

下面看一下connect的参数规则:

connect 的调用方法: connect(信号发送者的指针, SIGNAL(信号), 信号接收者指针, SLOT(槽---信号处理函数));


我的第一反应是 域名污染引起的,  真土! 出现这种情况的原因一般都是 connect 的信号接收者和 发送者没用定义。
后来排查发现真的 是接收者的头文件没有引用,这里做个记录。也奇怪,头文件缺失竟然报这种错误!

解决方法:

引用缺失的头文件。

网上有类似的问题,有个哥们也遇到这样的问题,这里也记一下:

error: no matching function for call to 'MainWindow::connect(*&, ...)
强制类型转换一下:
connect((QObject*)(sender),...); 

问题描述:

本人在一个 qt 程序中,这样定义了一个信号和槽的连接,但运行时没反应,提示  treeView_xmlb 没有信号 itemDoubleClicked(), 真纳闷 ,明明是有这个信号的?

代码如下:

suggestion::suggestion(QWidget *parent, Qt::WFlags flags)
	: QDialog(parent, flags)
{
	ui.setupUi(this);

	mode_suggestion = new QSqlTableModel(ui.tableView_suggestion);

	connect(ui.treeWidget_xmlb, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(showSubItem(QTreeWidgetItem*, int)));

	//设置树形表
	ui.treeWidget_xmlb->setColumnCount(1); //设置列数
	ui.treeWidget_xmlb->setHeaderLabel(tr("体检项目类别")); //设置头的标题
}

原因分析:

在网上找解决方法,无果,这个问题要么很深,要么很浅,后来将代码修改为如下

suggestion::suggestion(QWidget *parent, Qt::WFlags flags)
	: QDialog(parent, flags)
{
	ui.setupUi(this);

	mode_suggestion = new QSqlTableModel(ui.tableView_suggestion);

	//connect(ui.treeWidget_xmlb, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(showSubItem(QTreeWidgetItem*, int)));

	//设置树形表
	ui.treeWidget_xmlb->setColumnCount(1); //设置列数
	ui.treeWidget_xmlb->setHeaderLabel(tr("体检项目类别")); //设置头的标题

       connect(ui.treeWidget_xmlb, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(showSubItem(QTreeWidgetItem*, int)));
}
问题解决,所以建议connect 还是要放在构造函数的最后。

解决方法:

将connect 放在构造函数的最后







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值