`QTreeView` 何时在 Mac 上发出激活信号?

Posted

技术标签:

【中文标题】`QTreeView` 何时在 Mac 上发出激活信号?【英文标题】:When does a `QTreeView` emit the activated signal on Mac? 【发布时间】:2015-07-27 10:31:19 【问题描述】:

当您按下 Return 时,以下代码行在 Windows 上有效,但在 Mac 上无效。有谁知道为什么?

connect(qTreeView, SIGNAL(activated(const QModelIndex &)), this, SLOT(actJoin()));

当我查看它提到的 API 时

该信号在 index 指定的项目被激活时发出 由用户。 物品激活方式因平台而异;例如,通过 单击或双击项目,或按 Return 或 项为当前时的 Enter 键。

在我丢失的 Mac 上是否可以通过其他方式激活?

【问题讨论】:

如果 API 明确声明激活依赖于平台,则不太可能解决替代方案。 这并不能解释为什么 RETURN 在 Mac 上的工作方式会有所不同。 【参考方案1】:

CMD+O应该是Mac版的激活如here

#ifdef Q_WS_MAC
        if (event->key() == Qt::Key_O && event->modifiers() & Qt::ControlModifier && currentIndex().isValid()) 
            emit activated(currentIndex());
            break;
        

在 Mac 上按 Return 不会激活它,它会进入编辑模式。

【讨论】:

您的用户不太可能知道它,所以最好不要依赖它。这不是 Mac 上的标准快捷方式。或者,更确切地说,它是进入File->Open 菜单的标准快捷方式。恕我直言,Qt在这里的实现是没用的,你需要通过在视图上安装一个事件过滤器来自己捕捉相关的按键(Enter/Return)。 在找到正确答案后,我还添加了一个 SIGNAL/SLOT,以便它在所有操作系统中都能正常工作。

以上是关于`QTreeView` 何时在 Mac 上发出激活信号?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式检查QAbstractItemModel / QTreeView中的项目

QTreeView & QAbstractItemModel & insertRow

是否可以理解 swift 3 中何时发出通知?

mac 光标自动聚焦在激活窗口上

Office 2016 for mac该怎么破解激活

如何激活webstorm for mac 2016 2.3