QT: 如何在点击事件中展开/折叠文本(qtextbrowser,qwebview,...)

2 投票
1 回答
897 浏览
提问于 2025-04-17 13:15

我需要在一个python/QT的界面上显示大量文本。这些文本代表了一个测试人员发送的模式(数字信号)。

举个例子:

// Command 1
0x002045A85
0x002045A84
0x002045A83
...
// Command 2
0x002045A85
0x002045A84
0x002045A83
...

我只想在界面上显示模式中的评论部分。如果用户点击某一行评论,文本就会展开,并在点击的行下面显示一些十六进制代码。如果用户再次点击同一行评论,十六进制的内容就会收起。

如果用户点击某一行十六进制代码,会弹出一个显示数字信号的图形。

我对怎么实现这个完全没有头绪。

请问,有人能给我一个示例,帮助我进行这个开发吗?

贝诺瓦

1 个回答

2

使用一个 QTreeWidget:这里的“Command N”行就是你的第一层,展开后可以看到十六进制数字的项目。QTreeWidget 有一个 clicked() 信号,可以告诉你哪个项目被点击了,所以实现点击事件来显示信号图形应该很简单。

这个方法唯一的缺点是 QTreeWidget 需要你一次性创建整个树结构。如果你的数据量很大,内存使用可能会成为问题,那么你可以把这个界面改成 QTreeView,并使用一个自定义模型,按需加载第二层的数据。

撰写回答