您可以通过单击标签字符串来切换 QCheckBox。这为用户提供了一个舒适的大目标来点击。
但是,如果我有一个带有可检查项的 QListWidget,则用户必须在小框内单击以切换该项。这使得检查项目变得乏味,对于我们这些患有重复性压力损伤的人来说甚至有点痛苦。
我尝试连接到 QListWidget itemClicked 信号并切换项目复选框。如果用户单击项目文本,则效果很好。但是如果他们真的点击了这个框,检查状态就会被切换,然后 itemClicked 信号被发送,代码将检查状态切换回原来的位置。
任何人都可以建议一种通过单击复选框或项目文本来切换检查状态的方法吗?
谢谢...
最佳答案
QListWidgetItem
不提供任何方式来了解用户点击、标签或框的位置,因此最简单的方法是使用 QCheckBox
作为小部件。现在 QCheckBox
将表现为 QCheckBox
并且用户将能够通过单击无处不在的复选框(在 QCheckBox
上)
for(int r=0;r<7;r++)
{
QListWidgetItem* lwi = new QListWidgetItem;
ui->listWidget->addItem(lwi);
ui->listWidget->setItemWidget(lwi, new QCheckBox(QString("checkBox%1").arg(r)));
}
缺点:如果你有很多项目,它会降低性能。
关于Qt - 如何通过单击文本来切换 QListWidgetItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638640/