2013-03-09 21 views
7

をクリックして、私が持っていることは、以下です。 このQListWidgetでは、 "Mail 1"、 "Mail 2"などの要素があります。QListWidget:このようなことではいくつかの項目で</p> <p>A QListWidget、::</p> <p><code>ListMail</code>は私QListWidgetあるイベントアイテムに基本的

そして、私はどのようにしてシグナルを作ることができますか? "スロット(onClick)などにバインドします。

私はすでにのようなものを試してみました: connect(ui->listMail->selectedItems(0), SIGNAL(triggered()), this, SLOT(openMessage())、それがすべてでは動作しません...

任意のヘルプ?

ありがとうございます!

答えて

7

itemClickedシグナルにバインドする必要があります。信号は、クリックされた項目であるQListWidgetItem*を提供します。それは最初のものである場合は、それを調べて確認することができます。

MyClass::MyClass(QWidget* parent) 
    : QWidget(parent) 
{ 
    connect(ui->listMail, SIGNAL(itemClicked(QListWidgetItem*)), 
      this, SLOT(onListMailItemClicked(QListWidgetItem*))); 
} 

void MyClass::onListMailItemClicked(QListWidgetItem* item) 
{ 
    if (ui->listMail->item(0) == item) { 
     // This is the first item. 
    } 
} 
+0

ありがとうございます!それは魅力のように働いた! –

+1

'QListWidgetItem'を' connect'に渡すのがなぜうまくいかなかったのか説明しておかなければなりません: 'QObject'を拡張しないのでシグナルを出すことができません。 – andref

+0

私は理由はわかりませんが(私はPyQtバージョン5.7.1を使っています) 'itemClicked'はうまくいかず、シグナルは送られませんでした。しかし、 'itemPressed'に変更すると問題はありませんでした – sunyata

2

QListWidgetがクリックされたアイテムを教えてくれる信号QListWidget::itemPressed(QListWidgetItem *item)を持っています。この信号を自分のスロットに接続することができます。他にも関連するシグナルがあります。 documentationを参照してください。

+0

あなたに感謝! :) –

関連する問題

 関連する問題