2016-05-25 115 views
0

我想要激活QListWidget中的物品?如何激活QListwidget中的項目?

例如我有一個QListWidgetlw_mask_items

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

有人能告訴我如何選擇一個特定的項目並激活它嗎?

+2

你是什麼意思與激活? – Fabio

+0

喜歡點擊。但我不想點擊。我想在代碼中將其設置爲「單擊」。 –

+0

'item-> setCheckState(Qt :: Checked);'? – IAmInPLS

回答

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); 
} 
相關問題