Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自定义QTreeView项目_Python_Qt_Customization_Pyside_Qtreeview - Fatal编程技术网

Python 自定义QTreeView项目

Python 自定义QTreeView项目,python,qt,customization,pyside,qtreeview,Python,Qt,Customization,Pyside,Qtreeview,我对PySide和Qt完全不熟悉,现在需要创建一个应用程序,该应用程序具有带有样式项的树视图。每个项目需要两行文本(不同样式)和一个按钮。很多项目应该在视图中,所以我选择了QTreeView而不是QTreeWidget。现在我设法将简单的文本项(非样式)添加到QTreeView中,几乎不知道如何在一个项上放置多个小部件。你能给我举一个如何创造这种设计的例子吗 我在网上找到了一些与我想要的相似的样本,但是它们都是C++的,如何把委托和其他东西转换成Python并不明显。我现在真的很困惑…我建议您使

我对PySide和Qt完全不熟悉,现在需要创建一个应用程序,该应用程序具有带有样式项的树视图。每个项目需要两行文本(不同样式)和一个按钮。很多项目应该在视图中,所以我选择了QTreeView而不是QTreeWidget。现在我设法将简单的文本项(非样式)添加到QTreeView中,几乎不知道如何在一个项上放置多个小部件。你能给我举一个如何创造这种设计的例子吗


我在网上找到了一些与我想要的相似的样本,但是它们都是C++的,如何把委托和其他东西转换成Python并不明显。我现在真的很困惑…

我建议您使用简单的
QTreeWidget
,并使用
setItemWidget
插入复杂的小部件。虽然Qt的Widhet是外星人,但它们并没有那么重,但:

  • 您不应该创建代理
  • 您不应该处理事件(如果您要在视图中放置按钮并使用代理绘制它,您必须处理它的所有事件,例如鼠标悬停、焦点更改等。这是一项大量的工作

使用
setItemWidget
可以为项设置一个小部件。如何在每个项上设置多个QLabel和一个QPushButton?应该有类似QPanel的东西,但它似乎不存在。@首先,您可以为每个列设置单独的小部件,然后您的小部件可以具有非常复杂的内部结构。@Lol4to以及如何制作我的小部件的“非常复杂的内部结构”?@chersaya,与您通常创建GUI的方式相同。您甚至可以在UI设计器中创建表单,并将此表单作为小部件传递。@chersaya,
list->setItemWidget(item,column,QUiLoader().load('form.UI'))
load
方法只需返回
QWidget
。您可以像往常一样操作