📜  qt 小部件列表集已选中 - C++ (1)

📅  最后修改于: 2023-12-03 15:19:38.610000             🧑  作者: Mango

Qt小部件列表集已选中 - C++

介绍

本文介绍如何使用Qt框架中的小部件列表集(QListWidget)来实现已选中对象的功能,包括如何添加、移除和获取已选中对象等。

实现

首先,我们需要创建一个QListWidget小部件,并添加一些条目:

QListWidget* listWidget = new QListWidget(this);
listWidget->addItem("Item 1");
listWidget->addItem("Item 2");
listWidget->addItem("Item 3");

接着,我们可以使用以下代码获取已选中的条目列表:

QList<QListWidgetItem*> selectedItems = listWidget->selectedItems();

得到的selectedItems是一个QList,我们可以使用foreach循环遍历并输出每个条目的文本:

foreach(QListWidgetItem* item, selectedItems)
{
    qInfo() << item->text();
}

如果需要移除所有已选中的条目,可以使用以下代码:

foreach(QListWidgetItem* item, selectedItems)
{
    delete item;
}

如果希望在添加新的条目时自动设置其选择状态,可以使用以下代码:

listWidget->setSelectionMode(QAbstractItemView::MultiSelection);
listWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
listWidget->setFocusPolicy(Qt::NoFocus);
listWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
listWidget->viewport()->setAttribute(Qt::WA_Hover, true);

connect(listWidget, SIGNAL(itemPressed(QListWidgetItem*)), this, SLOT(onItemPressed(QListWidgetItem*)));

void MainWindow::onItemPressed(QListWidgetItem* item)
{
    if(item)
    {
        item->setSelected(!item->isSelected());
    }
}

上述代码可以在添加条目时启用多选模式,并设置选择行为。在小部件获取焦点时,将其焦点策略设置为无焦点。将编辑触发器设置为“NoEditTriggers”以禁止编辑条目。在小部件视图上设置悬停属性,以使悬停时显示工具提示。还可以使用slot槽函数onItemPressed来设置条目的选择状态。

结论

使用Qt框架中的小部件列表集,可以轻松实现已选中对象的功能,包括添加、移除和获取已选中对象等。以上代码只是一个示例,可根据需求进行修改和完善。