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