【问题标题】:Can connectSlotsByName connect to selection model changes?connectSlotsByName 可以连接到选择模型更改吗?
【发布时间】:2012-09-18 16:50:07
【问题描述】:

在我的主窗口 (QMainWindow) 中,我有一个 QTableView(名为 commandsTableView)。现在我想对它的选择变化做出反应。

我做了一个插槽并手动将其连接到ui.commandsTableView->selectionModel()。一切正常。

但后来我想:为什么不使用自动连接(尤其是会有更多的连接要做)?至少它会为一致的命名规则增加更多的力量。

但我无法找到正确的名称语法。我试过了:

  • on_commandsTableView_selectionModel_selectionChanged,
  • on_commandsTableViewSelectionModel_selectionChanged,
  • on_commandsTableView_selectionChanged,
  • on_commandsTableView___selectionChanged

但都没有奏效。在所有情况下,运行应用程序时都会输出一条消息(带有相应的插槽名称,这里仅作为示例先给出):

QMetaObject::connectSlotsByName: No matching signal for on_commandsTableView_selectionModel_selectionChanged(QItemSelection,QItemSelection)

(为什么没有响应连接错误的断言 - 我无法理解。在我发现输出中的那些 - 以及类似的 - 消息之前,我花了很多时间想知道出了什么问题。) p>

ui.commandsTableView->selectionModel() 返回的对象名称为空。但是在调用connectSlotsByName 之前将其设置为selectionModel 也无济于事。

【问题讨论】:

    标签: qt signals-slots


    【解决方案1】:

    根据the documentationconnectSlotsByName()只支持像这样的签名

    void on_<object name>_<signal name>(<signal parameters>);

    根据 the sources,这是它检查的唯一形式(观察它如何收集子项列表,然后将父项的方法名称与子项的名称进行匹配)。

    因此,为了能够使用自动连接,您将需要一个命名选择模型,该模型将在调用 connectSlotsByName() 之后继续存在。每次更改选择模型(不太可能)或模型(可能)时,您都必须为选择模型命名并再次自动连接。但是,唉connectSlotsByName() 将复制所有其他连接,因为它似乎不检查连接是否唯一,因此我们必须手动将信号连接到模型、场景等动态子节点。

    【讨论】:

      【解决方案2】:

      我觉得是

      on_selectionModel_selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)
      

      【讨论】:

      • artm 的回答让我意识到你真正(似乎)的意思。我不仅要更改函数名称而且在选择模型上以"selectionModel" 名称调用setObjectName(在上述情况下)。我对你投了反对票,但现在我想收回它。但是,除非您编辑答案,否则我不能(投票已锁定)。如果是这样,那么我将删除我的反对票。但下次要更明确!
      • 没关系。我只会投反对票。只是在开玩笑。 :) 不要担心投票。反正这不是真的。顺便提一句。不知道能具体到什么程度。我什至拼出了整个函数签名。 :)
      • 嗯,我错过的最重要的事情是拨打setObjectName。我确实在问题中提到了这一点,但仅将其视为一集。由于它不适用于我的任何功能,因此我删除了该调用,然后在测试您的功能时它不起作用。 ;)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2018-10-18
      • 2014-09-20
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多