QTableView选择已更改

QTableView选择已更改,qt,qt4,selection,Qt,Qt4,Selection,我有一个QTableView,需要从中获取selectionChanged事件。我似乎无法让连接正常工作。我有: MyWidget.h MyWidget.cpp 在运行时,我会收到“无此类信号”错误。您需要从信号宏和插槽宏中删除变量名: connect( table->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), S

我有一个
QTableView
,需要从中获取selectionChanged事件。我似乎无法让连接正常工作。我有:

MyWidget.h

MyWidget.cpp


在运行时,我会收到“无此类信号”错误。

您需要从信号宏和插槽宏中删除变量名:

 connect(
  table->selectionModel(),
  SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
  SLOT(slotLoadTransaction(const QItemSelection &, const QItemSelection &))
 );

Connect实际上是在查看函数签名,而变量名混淆了它。

+1您似乎忘记了语句中的“this”(信号和插槽之间的参数)tho,是吗?Andy,我想我能理解这一点。卡莱布,谢谢你,先生!像宝石一样工作:)@Andy-不,我故意把它漏掉了。当接收者是“this”时,上面的语法更加简洁和等价。有两个连接,一个连接实例方法(我使用的)和一个静态方法。有关更多信息,请参阅文档。@Andy:他实际上并没有忘记“这个”。。。如果从QObject继承,则会有一个重载版本的connect,它接受给定的参数,并假定“this”是插槽的对象。
 connect(
  table->selectionModel(),
  SIGNAL(selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)),
  this,
  SLOT(slotLoadTransaction(const QItemSelection & selected, const QItemSelection & deselected))
 );
 connect(
  table->selectionModel(),
  SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
  SLOT(slotLoadTransaction(const QItemSelection &, const QItemSelection &))
 );