Qt - 如何通过单击文本来切换 QListWidgetItem

标签 qt qlistwidget

您可以通过单击标签字符串来切换 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/

相关文章:

qt - 使用 QListWidgetItem::setData 存储指针

qt - 用额外的数据自定义QListWidgetItem来存储,如何?

css - 没有阴影框的 qtoxygen 样式

c++ - 动态创建的自定义 QML 对象不可见

Qt 应用程序中的 c++ boost::thread() - 错误:函数参数太多

c++ - QListWidget,为较长的文本插入换行符

python - 我可以覆盖 QListWidgetItem 的 __lt__ 比较器的输入吗? (PyQt)

qt - QML + .qrc : Keeping images under another prefix

c++ - (Qt 或其他)在 Windows 桌面或 explorer.exe 上使用 http 或 ftp 协议(protocol)拖放 mime 类型 uri-list 的数据

c++ - 按文本内容删除 QListWidget 项