【问题标题】:QTableView selectionChangedQTableView selectionChanged
【发布时间】:2021-10-31 21:07:15
【问题描述】:

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

MyWidget.h

...

protected slots:
 void slotLoadTransaction(const QItemSelection & selected, const QItemSelection & deselected);
private:
 QTableView table;

...

MyWidget.cpp

...

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

...

在运行时,我收到“没有这样的信号”错误。

【问题讨论】:

    标签: qt qt4 selection


    【解决方案1】:

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

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

    Connect 本质上是在查看函数签名,而变量名会混淆它。

    【讨论】:

    • +1 您似乎忘记了语句中的“this”(SIGNAL 和 SLOTS 之间的参数),不是吗?
    • 安迪,我想我可以弄清楚这一点。卡莱布,谢谢你,先生!像宝石一样工作:)
    • @Andy - 不,我故意忽略了它。只要收件人是“this”,上述语法就更加简洁和等效。有两个连接,一个连接实例方法(我使用过)和一个静态方法。有关详细信息,请参阅文档。
    • @Andy:他实际上并没有忘记“this”......如果你从 QObject 继承,你有一个重载版本的 connect 接受给定的参数,并假设“this”为插槽的对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多