C++ 如何在QTreeView中实现类似于macOS plist编辑器的按钮?

C++ 如何在QTreeView中实现类似于macOS plist编辑器的按钮?,c++,qt,qtreeview,C++,Qt,Qtreeview,如何实现与macOS使用的plist编辑器类似的行为,如下图所示: 因此,当鼠标悬停在一行上时,会出现“添加”和“删除”按钮。此外,当选择一行时,它们保持可见 我在想一种带有按钮的隐藏列,为了简单起见,所有列都是固定宽度的 我不认为使用文本隐藏和所有功能都可以实现确切的行为(或者这太麻烦了),但是对于我需要的更简单的情况,是否可以实现某种带有按钮的隐藏列,这是一种好方法?您应该使用MVC方法,然后,您的代表将负责在其绘制方法中显示您想要的内容。当然,因为我使用的是QTreeView,所以我必须

如何实现与macOS使用的plist编辑器类似的行为,如下图所示:

因此,当鼠标悬停在一行上时,会出现“添加”和“删除”按钮。此外,当选择一行时,它们保持可见

我在想一种带有按钮的隐藏列,为了简单起见,所有列都是固定宽度的


我不认为使用文本隐藏和所有功能都可以实现确切的行为(或者这太麻烦了),但是对于我需要的更简单的情况,是否可以实现某种带有按钮的隐藏列,这是一种好方法?

您应该使用MVC方法,然后,您的代表将负责在其绘制方法中显示您想要的内容。当然,因为我使用的是QTreeView,所以我必须使用MVC方法(或者更准确地说是MV方法),并且我知道我必须重写paint()。我要求的是具体的指导方针,你会怎么做?按钮所在的另一个隐藏列?或者我可以把按钮排成一行,然后把它们对齐?或者我没有想到的第三种方法?我习惯的方法是重新实现QStyledItemDelegate,并在paint方法中调用QApplication::style()->drawControl(…)在想要的位置绘制任何类型的小部件(这对于您的用例来说似乎没问题)。您应该使用MVC方法,然后,您的代表将负责在其绘制方法中显示您想要的内容。当然,因为我使用的是QTreeView,所以我必须使用MVC方法(或者更准确地说是MV方法),并且我知道我必须重写paint()。我要求的是具体的指导方针,你会怎么做?按钮所在的另一个隐藏列?或者我可以把按钮排成一行,然后把它们对齐?或者我没有想到的第三种方法?我习惯的方法是重新实现QStyledItemDelegate,并在绘制方法中调用QApplication::style()->drawControl(…),以在想要的位置绘制任何类型的小部件(这对于您的用例来说似乎没问题)