【发布时间】:2018-09-24 08:49:44
【问题描述】:
我有一个 QTableWidget,如果单击一个单元格,我想向 MainWindow 发出一个信号。
我的头文件:
QTableWidget *myQtableWidget= new QTableWidget;
...
private slots:
void on_myTableWidgetWindow_cellClicked(int row, int column);
mainWindow.cpp(在mainWindow的构造函数中):
connect(this->myQtableWidget, SIGNAL(cellClicked(int row, int column)),
this, SLOT(on_myTableWidgetWindow_cellClicked(int row, int column)));
mainWindow.cpp(某处):
void mainWindow::on_myTableWidgetWindow_cellClicked(int row, int column)
{
//do something
}
控制台输出为:
QMetaObject::connectSlotsByName: No matching signal for on_myTableWidgetWindow_cellClicked(int,int)
QObject::connect: No such signal QTableWidget::cellClicked(int row, int column) in ..\myProg\windowMain.cpp:71
QObject::connect: (receiver name: 'mainWindow')
为什么控制台告诉我:“没有这样的信号 QTableWidget::cellClicked”? 在 QT-Docs 中,列出了这个信号:http://doc.qt.io/qt-5/qtablewidget.html#cellClicked
我看不到我的错误,有人可以帮忙吗? 最好的,
【问题讨论】:
-
应该是
connect(this->myQtableWidget, SIGNAL(cellClicked(int, int)), this, SLOT(on_myTableWidgetWindow_cellClicked(int, int)));。无需包含函数参数名称。 -
更好的是,使用新的
Qt5signal/slot syntax --connect(this->myQtableWidget, &QTableWidget::cellClicked, this, &MainWindow::on_myTableWidgetWindow_cellClicked)。 -
...和QTableView selectionChanged...
标签: c++ qt signals-slots qtablewidget