c++ - 图标点击Qt QTreeWidget

标签 c++ qt

我的 Qt 表单中有一个 treewidget。它显示了一个文件树,显示了一个代表它们的图标,以及它们的名称。

我使用 treeItem->setIcon(0, *icon)treeItem->setText(0, text) 输入了这些。

我将两个值输入到同一列 (0) 的原因是,否则图标将不会留在文本旁边,而是始终贴在左边,即使文本向右缩进也是如此(因为它是另一个项目的 child )。

问题是,现在我无法判断用户是点击了图标还是点击了文本本身,我需要分别处理这些。

那么,当单击树形小部件中的对象时,除了树项和列之外,是否还有更多信息, 或者有什么方法可以将它们放在单独的列中,并且仍然具有图标和文本应有的正常行为?

谢谢。

最佳答案

如果您只是使用 clicked() 或 itemClicked() 信号,我认为没有直接的方法来获取更多信息。您可能必须创建一个继承 QTreeWidget 的自定义类,并重新实现其中一个虚拟鼠标事件函数。

mouseMoveEvent ( QMouseEvent * )
mousePressEvent ( QMouseEvent * )
mouseReleaseEvent ( QMouseEvent * )

这不是我推荐的东西,除非你真的知道你在做什么,并且真的需要这样做。

但是,我不记得在任何地方看到过列表小部件,其中单击图标的处理方式与单击同一列中的文本的处理方式不同。因此,如果您正在寻找“图标和文本应具有的正常行为”,您可能应该寻找其他解决方案。

关于c++ - 图标点击Qt QTreeWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062398/

相关文章:

c++ - 具有空值和自定义删除器的 shared_ptr 奇怪

c++ - 控制台将继续关闭而不是读取 if 语句中的字符串

c++ - QQuickView 新删除类型不匹配

c++ - 为什么在使用 libusb 与 PIC 18F2550 通信时读取或写入超过 3 个字节时会出错?

c++ - Qt:当QPointer改变时发出信号

c++ - C++中的N体模拟

python - 如何阻止 opencv 调用 qDebug?

c++运算符字符串和char *导致歧义错误

c++ - 带有 QConcurrent::run 的 QMutex 没有按预期工作?

c++ - QMainWindow中选择 "central widget"的规则是什么?为什么它很重要?