在Qt中,QPushButton没有选中状态,只有按下和释放两种状态。如果您想要在QTreeWidget中实现按钮的选中状态,可以考虑使用QCheckBox控件代替QPushButton,并将其设置为可选中状态。
以下是一个示例代码:
在构造函数中创建一个QTreeWidget和一个QTreeWidgetItem,并向QTreeWidgetItem添加一个QCheckBox控件:
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
QTreeWidget *treeWidget = new QTreeWidget(this);
QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget);
treeWidget->addTopLevelItem(item);
QCheckBox *checkBox = new QCheckBox(treeWidget);
item->setCheckState(0, Qt::Unchecked); // 设置初始状态为未选中
treeWidget->setItemWidget(item, 0, checkBox);
}
然后,您可以连接QCheckBox的stateChanged()信号,并根据其状态来更新QTreeWidgetItem的状态:
connect(checkBox, &QCheckBox::stateChanged, [=](int state) {
if (state == Qt::Checked) {
item->setCheckState(0, Qt::Checked);
} else {
item->setCheckState(0, Qt::Unchecked);
}
});
这样,当用户点击QCheckBox时,QTreeWidgetItem的状态也会相应地改变。