问题标签 [qtreewidgetitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
870 浏览

qt - 在放置事件 Pyside 中检索 QTreeWidgetItem 对象

我正在编写一个程序,我需要来自 QTreeWidgetItem 的数据,这些数据已放入我的 QTreeWidget 的另一部分。拖放工作完美,我能够在我的 eventFilter 中获得一个 QEvent.Drop 类型的事件。但我无法获得被丢弃的实际对象,或任何其他数据。

我怎样才能得到被丢弃的对象?

0 投票
1 回答
659 浏览

qt - Qt QTreeWidget how to get the row a QComboBox is on

I have a QTreeWidget with several QComboBoxes as QTreeWidgetItems. I am trying to find a way to get the current QTreeWidget row of the selected QComboBox. ui->sensorTree is the QTreeWidget. My tree looks something like this:

So if QComboBox0 was selected I would want to return 0.

Update:

This gives me the correct row. The problem now is that the row does not have to be selected to change the QComboBox. What I need is to connect QComboBox.indexChanged to pass the row the ComboBox is in, and the current ComboBox text of all ComboBoxes in the row.

0 投票
2 回答
304 浏览

python - 使用 PySide 创建 GUI

我准备了一些 Python 命令行工具。所以现在我正在尝试创建一个 GUI,以便一键执行该工具。我目前正在尝试 Pyside 并创建一个 QTreewidget。我在 QT Designer 上一一输入项目。但是,当我使用 pyside-uic 将其转换为 .py 文件时,Qtree 项目的编号为 item1、item2 等,例如,

而且我找不到任何地方可以从 QT 设计器那里编辑属性(通过给每个项目一个标签/名称来识别它)。任何人都可以帮忙。谢谢

0 投票
1 回答
1407 浏览

python - 调用类以在 Window 中构建 QTreeWidget:参数 1 具有意外类型“Ui_MainWindow”

我正在使用从ekhumoro获得的代码从我创建的 GUI 的 xml 文件动态创建树,但是当尝试调用从 pyuic4 生成的 _ui.py 文件中的类时,我得到了 Ui_MainWindow返回的类而不是预期的参数。

XmlHandler,它创建树项(根据我的理解):

使用 XmlHandler 制作小部件的类:

我四处摸索并尝试在我的 GUI 中使用它:

以及我在尝试运行文件时遇到的错误:

所以我想我的问题是:我如何调用这个类并在 UI_MainWindow 类中传递正确的参数,而不是调用我假设的父类?

0 投票
1 回答
3879 浏览

python - 用python右键单击QTreeWidget上的弹出菜单

我正在尝试用python编写一个程序,其中包含一个treewidget,并且能够在单击鼠标右键后添加、重命名和删除集群。我对python很陌生,到目前为止这是我的代码:

有人可以告诉我在某个集群上单击鼠标右键后如何打开弹出菜单吗?先感谢您!

0 投票
2 回答
3862 浏览

python - 在 PyQT4 中使用 QTreeWidgetItemIterator 从 QTreeWidget 返回 isChecked 作为字典(或...某物)

检查最终代码的编辑!

所以......我承认由于缺乏知识,我在这里画了一个绝对空白,我只会展示我的代码并祈祷一下。

使用这个奇妙的 xml 到ekhumoro编码的 QTreeWidget 生成器,我在复选框中添加了(父节点的三态),现在我正在尝试遍历这些复选框并返回字典或列表列表或......与父节点:children (server:services in this tree) 关系,以便我可以根据树的检查结果构建文件夹路径。这将作为系列中的第一个功能在按下“开始”按钮时发生。

最终目标是拥有一个工具,该工具可以根据用户提供的开始和停止时间从平台上的多个服务器和每个服务器的服务中提取日志,并将这些日志传送到具有相同文件夹结构的管理框。

我已经成功地浏览了一个测试字典,基于 os.path.getctime 和 getmtime 搜索和定位文件,压缩它们,然后将它们复制到一个单独的驱动器,该驱动器具有作为函数的一部分创建的相同文件夹结构......

但是,我发现几乎没有关于 TreeWidgetItemIterator 的文档(只有http://pyqt.sourceforge.net/Docs/PyQt4/qtreewidgetitemiterator.html#details),这对我没有多大帮助。所以这个难题的完整(也是最后)部分让我迷失了!

XML处理程序:

使用 XmlHandler 制作小部件的类:

在我的 GUI 中创建小部件:

小部件是父母和孩子的两个级别,仅此而已:

http://i.imgur.com/npPhG41.jpg

现在我们已经到了我被困的地方。我可以将信号与按钮按下联系起来,我可以做其他所有事情,但从 QTreeWidget 中获取已检查的项目。看来我需要构建一个迭代器并在它的init中包含 Checked 标志,但我尝试过的任何东西都想出了 bupkiss。我很乐意找到解决方案,而不是提供给我一个解决方案,但没有起点一直令人沮丧。

编辑:所以我实际发布的内容都没有任何用处,但 ekhumoro 理解了我的问题的症结并提供了他的解决方案(接受的答案)。我添加了一个 anelif来处理检查父母的任何事情(因为它似乎没有读到孩子被检查为由此产生的效果):

然后能够使用此示例根据 gui 中其他地方的另一个组合框选择特定的子项:

我确信代码很讨厌,但是通过只选择孩子,它会部分检查父母,这允许导出功能正常工作。

0 投票
3 回答
1679 浏览

qt - 从 QTreeWidget 中的 QLabel 中删除空间

我已将 QLabel 小部件添加到我的 QTreeWidget 以解决 QTreeWidget 中的自动换行问题。(请参阅如何对 QTreeWidgetItem 进行自动换行)。QLabel 小部件似乎在文本周围有间距,由于某种原因,当文本换行时它会消失。当标签文本为空白时,它也不会显示。

我尝试setContentsMargin(0,0,0,0)在 QLabel 上进行设置,但没有奏效。我也试过setStyleSheet("border: 0px; margin: 0px; padding: 0px;")了,也没有帮助。

截屏: 树截图

您可以看到,QT 是否决定在单词周围放置间距缓冲区取决于描述的长度。它仅在启用自动换行时发生。进一步玩耍似乎表明它依赖于描述字符串中的空格。字符串中没有空格可以防止单词周围出现额外的空格。可能与 QLabel 对其自动换行属性所做的事情有关。

0 投票
1 回答
10270 浏览

c++ - QTreeWidget通过拖动重新排序子项

我有一个 QTreeWidget,它只显示一个根节点和一个级别的子节点。我需要允许重新排序子节点。他们绝不能被重新抚养。

这就是我启用 QTreeWidget 中项目拖动的方式:

根项目是这样插入的:

当我在视图中插入一个孩子时,它是这样声明的:

此时,我可以拖动一个子项并将其“重新插入”到子项列表中。我也可以将它移动到根级别 - 这是我不想要的。

我正在使用 QT Creator v3,因此 QTreeWidget 在我的 UI 定义文件中。

我在这里错过了什么吗?

0 投票
1 回答
566 浏览

python - QTreeWidgetItem 的 PyQt 运行时错误

当底层 C/C++ 对象被删除时,我试图避免众所周知的 PyQt 运行时错误:

http://www.riverbankcomputing.com/pipermail/pyqt/20​​09-April/022809.html

PyQt4 - “RuntimeError:底层 C/C 对象已被删除”

PyQt4 嵌套类 - “RuntimeError:底层 C/C++ 对象已被删除”

PyQt:RuntimeError:包装的 C/C++ 对象已被删除

我的每个子类都调用该super()方法,因此基类构造正确。

尽管如此,我还是收到了这个错误,我想知道这是否是因为我向 a 添加了一个QComboBox小部件QTreeWidgetItem(使用 a 的setItemWidget()方法QTreeWidget),但我无法将父级设置为QTreeWidgetItem包含它的那个。当我尝试时,我收到以下错误:

当然,我可以在构造函数中省略父级,也可以将其QTreeWidget作为父级传递,但我认为我需要引用正确的父级。

我已经对QComboBox和 在我的子类中运行了一些基本操作QTreeWidget,但是一旦我进入我的子类的方法QComboBoxQTreeWidgetItem包含QComboBox与设置QComboBox) 的父级有关。

我理解 10 次中有 9 次运行时错误是由于未构造基类所致。但是排除了这一点,错误怎么会发生呢?可能是因为没有引用正确的父母吗?

编辑

我正在使用Qcombobox发出新的组合选择来发出信号。在进行新选择时,它将选择的值添加到 PyXB XML 节点。有趣的是,仅当我将值附加到 PyXB 类绑定中,将信息永久存储在 XML 文件中时,才会出现此问题。换句话说,如果代码的那部分没有运行,我不会收到错误 - 只有当代码运行 PyXB 操作以将值附加到 XML 节点绑定时...

0 投票
0 回答
209 浏览

c++ - 如果有多个文件,QTreewidget 滚动会变慢

我在我的应用程序中使用 QTreewidget。我在运行时用一些文件地址填充这个 QTreewidget。现在我的问题是,当文件数量过多(超过 200 个)时,QTreewidget 中的滚动速度会变慢,这给我的进一步处理带来了问题,但是当文件较少时,它可以正常工作。有谁可以告诉我这个 Qtreewidget 问题背后的原因是什么?谢谢。