4

我想在我的 中添加一个复选框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);
4

3 回答 3

9

默认情况下,QTreeWidgetItem 中已经设置了 ItemIsUserCheckable 标志,所以这不是问题。

你需要做的就是

item->setCheckState(Qt::Unchecked);

你应该会看到一个复选框。

于 2015-09-04T17:50:15.853 回答
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;
于 2014-04-16T10:39:04.813 回答
1

Qt::ItemIsUserCheckable并且Qt::ItemIsSelectable是 QTreeWidget 的默认设置。

item->setCheckState(column, Qt::Unchecked)没关系。

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

于 2020-06-02T20:41:12.273 回答