我的程序中有一个用于显示结果的QTableWidget,我试图能够检测用户单击其中一个垂直标题的时间。为此,我试图将信号sectionDoubleClicked(int)连接到我的函数hheaderclicked(int)。当我尝试编译代码时,我得到一个关于没有匹配函数的编译时错误。我的帖子来自帖子here
编译错误:
mainwindow.cpp:138: error: no matching function for call to âMainWindow::connect(QHeaderView*, const char [27], MainWindow* const, const char [21])â
/usr/lib64/qt4/include/QtCore/qobject.h:181: note: candidates are: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*, Qt::ConnectionType)
/usr/lib64/qt4/include/QtCore/qobject.h:282: note: bool QObject::connect(const QObject*, const char*, const char*, Qt::ConnectionType) const
我的代码:
QObject::connect(ui->table_results->horizontalHeader(),SIGNAL(sectionDoubleClicked(int)),
this,SLOT(hheaderclicked(int)));
编辑: 通过执行以下操作,我能够使我的代码工作:
QObject::connect((QObject*)ui->table_results->verticalHeader(),SIGNAL(sectionClicked(int)),this,SLOT(hheaderclicked(int)));
有人可以解释为什么我必须将QHeaderView *转换为QObject *以使其工作,我不必投射任何其他QObject :: connect调用它们都可以正常工作。例如,这项工作很好:
QObject::connect(ui->button_start,SIGNAL(clicked()),this,SLOT(scanstart()));
是因为这个是在编译时连接到已知对象而我的另一个连接到一个直到运行时才知道的对象?
答案 0 :(得分:1)
错误消息将第三个参数赋予MainWindow* const
,这很奇怪。如果是const MainWindow*
,则呼叫应该有效。如何声明调用函数?