QTableView selectionChanged

Dav*_*her 12 qt qt4 selection

我有一个QTableView我需要从中获取selectionChanged事件.我似乎无法使连接工作.我有:

MyWidget.h

...

protected slots:
 void slotLoadTransaction(const QItemSelection & selected, const QItemSelection & deselected);
private:
 QTableView table;
Run Code Online (Sandbox Code Playgroud)

...

MyWidget.cpp

...

 connect(
  table->selectionModel(),
  SIGNAL(selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)),
  this,
  SLOT(slotLoadTransaction(const QItemSelection & selected, const QItemSelection & deselected))
 );
Run Code Online (Sandbox Code Playgroud)

...

在运行时,我得到"No such Signal"错误.

Kal*_*son 16

您需要从SIGNAL和SLOT宏中删除变量名称:

 connect(
  table->selectionModel(),
  SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
  SLOT(slotLoadTransaction(const QItemSelection &, const QItemSelection &))
 );
Run Code Online (Sandbox Code Playgroud)

Connect实际上是在查看函数签名,变量名称会让人感到困惑.

  • @Andy - 不,我故意将它排除在外.只要收件人是"this",上述语法就更简洁和等效.有两个连接,一个连接实例方法(我使用过)和一个静态方法.有关更多信息,请参阅文档. (4认同)
  • @Andy:他实际上并没有忘记"这个"...如果你从QObject继承,你有一个带有参数的连接的重载版本,并假定"this"作为插槽的对象. (3认同)
  • +1您似乎忘记了声明中的"this"(SIGNAL和SLOTS之间的参数),不是吗? (2认同)