添加复选框到qtreewidgetitem

时间:2014-04-16 10:33:37

标签: c++ qt qtreewidgetitem

我想在我的qtreewigetitem中添加一个复选框,我尝试将此代码添加到setflag,然后我添加项目是可选择的,也许这样可以解决我的问题,但没有任何反应,你愿意吗?请帮助我如何将check box添加到我的项目中? 提前谢谢你

m_eventList->addTopLevelItem(new QTreeWidgetItem);
       QTreeWidgetItem *item = m_eventList->topLevelItem(m_eventList->topLevelItemCount()-1)

    item->setFlags(item->flags() | Qt::ItemIsUserCheckable |Qt::ItemIsSelectable);

3 个答案:

答案 0 :(得分:8)

在QTreeWidgetItem中默认设置了ItemIsUserCheckable标志,所以这不是问题。

您只需要做

item->setCheckState(Qt::Unchecked);

你应该看到一个复选框。

答案 1 :(得分:6)

尝试重新组织代码:

QTreeWidgetItem* item = new QTreeWidgetItem();
item->setFlags(item->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
item->setCheckState(Qt::Checked);
m_eventList->addTopLevelItem(item);

另一种方法是编写自己的模型并覆盖flags()方法。在此方法中,您将返回

Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable;
if (index.column() == 0)
{
    flags |= Qt::ItemIsUserCheckable;
}
return flags;

答案 2 :(得分:0)

Qt::ItemIsUserCheckableQt::ItemIsSelectable是QTreeWidget的默认设置。

item->setCheckState(column, Qt::Unchecked)可以。

https://doc.qt.io/qt-5/qtreewidgetitem.html#flags