Как активировать элемент в QListwidget?

Я хочу активировать предмет в QListWidget?

Например, у меня есть QListWidget с именем lw_mask_items.

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

Может кто подскажет, как выбрать конкретный предмет и активировать его?


person F. Win    schedule 25.05.2016    source источник
comment
Что вы имеете в виду под активировать?   -  person Fabio    schedule 25.05.2016
comment
вроде щелкнул. Но я не хочу нажимать. Я хочу, чтобы он щелкнул в коде.   -  person F. Win    schedule 25.05.2016
comment
Так ты имеешь в виду выбранный? Вы можете использовать QListWidgetItem::setSelected()   -  person Fabio    schedule 25.05.2016


Ответы (1)


Если вы хотите просто поймать выбранный элемент, вы можете использовать сигналы 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);
}
person someoneinthebox    schedule 25.05.2016