如何激活QListwidget中的项目?

时间:2016-05-25 07:32:19

标签: python qt qlistwidget

我想激活QListWidget

中的项目

例如,我有QListWidget名为lw_mask_items

lw_mask_items.addItem('Rectangle 1')
lw_mask_items.addItem('Rectangle 2')
lw_mask_items.addItem('Rectangle 3')

有人可以告诉我如何选择特定项目并将其激活吗?

1 个答案:

答案 0 :(得分:0)

如果您想抓住所选项目,可以使用QListWidget的信号itemClicked(QListWidgetItem *item)itemActivated(QListWidgetItem *item)。如果您想以某种方式激活自定义项,可以使用setItemSelected()方法或setSelected() QListWidgetItem

因此,您的代码可以是例如:

.h方:

<...>
    signals:
        void someSignal(const QString &data);

    public slots:
        void itemClicked(QListWidgetItem *item);
        void someSlot(const QString &data);
}

.cpp方:

YourClass::YourClass()
{        
    lw_mask_items.addItem('Rectangle 1')
    lw_mask_items.addItem('Rectangle 2')
    lw_mask_items.addItem('Rectangle 3')
    connect(&lw_mask_items, &QListWidget::itemClicked, this, &YourClass::itemClicked);
    connect(this, &YourClass::someSignal, this, &YourClass::someSlot);
}

void YourClass::itemClicked(QListWidgetItem *item)
{
    // your code here
}

void YourClass::someSlot(const QString &data)
{
    for(int i = 0; i < wid.count(); i++)
        if(wid.item(i)->data(Qt::DisplayRole).toString().contains(data))
            wid.item(i)->setSelected(true);
}