蚂蚁power:不是很明白你说的这个。我是这么写的(举例子):有两个父节点,每个父节点下面有N个子节点,父节点上不设置代理,只给子节点设置代理,但是因为子节点的名称不同,所以需要设置的代理也不同。如果使用setItemDelegateForRow那么参数“row”该怎么写?如果使用的是setItemDelegat ..
(2015-06-19 09:36)
setItemDelegateForColumn没问题。
创建QTreeWidget时,给每个节点设置一个setWhatsThis(int column, const QString & whatsThis)设置一个区分的字符串。(当然用text ,data也可以,但这些可能会变化,判断麻烦些)
在itemClicked(QTreeWidgetItem * item, int column)信号处理槽中,这样写
void slotTreeItemClicked(QTreeWidgetItem * item, int column)
{
if(nullptr == item) return;
const QString str = item->whatsThis(column);
if(str == "1")
treeWidget->setItemDelegateForColumn(column, delegate1);
else if(str=="2")
treeWidget->setItemDelegateForColumn(column, delegate2);
....
}
思路是这样的.
就算把其它的都设置成不想要的代理也没关系。每次你点击它,就会设成正确的了