2016-05-25 26 views
0

QListWidgetでアイテムを有効にしますか?QListwidgetで項目を有効にする方法は?

例えば、私はと呼ばれるQListWidgetを持っています。

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); 
} 
関連する問題