gpt4 book ai didi

qt - 有没有办法在我的 QListWidget 中禁用 QListWidgetItem?

转载 作者:行者123 更新时间:2023-12-02 17:29:55 28 4
gpt4 key购买 nike

我正在使用 QListWidgetItem 在我的 QListWidget 中添加项目。

在某些情况下,我希望我的 QListWidget 的某些行变得不可选择。 (我的意思是我想要一些 QListWidgetItem不可选择的)

有什么办法吗?

PS:我试过了

listWidgetItem->setFlags(Qt::NoItemFlags)

listWidgetItem->setSelected(false);

但它们不会禁用项目的选择。

编辑:

QStringList _strListClients = _strClients.split(",",QString::KeepEmptyParts,Qt::CaseInsensitive);

for(int i = 0; i < _strListClients.count(); i++)//Add Client's Check Boxes
{
QListWidgetItem* _listWidgetItem = new QListWidgetItem(_strListClients[i], listWidgetClients);
listWidgetClients->addItem(_listWidgetItem);

if(_strListClients[i] == "Unknown"){
_listWidgetItem->setSelected(false);
_listWidgetItem->setTextColor(Qt::red);
_listWidgetItem->setFlags(_listWidgetItem->flags() & ~Qt::ItemIsSelectable);

}

最佳答案

只需删除 Qt::ItemIsSelectable flag来自每个项目:

item->setFlags(item->flags() & ~Qt::ItemIsSelectable);

或者,如果您想删除与该项目的所有交互,则删除Qt::ItemIsEnabled

例如

#include <QtWidgets>

int main(int argc, char **argv)
{
QApplication app(argc, argv);

QListWidget widget;

for (int i = 0; i < 100; ++i) {
QListWidgetItem *item = new QListWidgetItem(QStringLiteral("Item %1").arg(i));
if (i % 2 == 0) // disable one every two
item->setFlags(item->flags() & ~Qt::ItemIsSelectable);
widget.addItem(item);
}

widget.show();

return app.exec();
}

关于qt - 有没有办法在我的 QListWidget 中禁用 QListWidgetItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34975673/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com