2011-08-05 13 views
2

2つのコンボボックスメッセージを含むQtフォームがあります。第2のコンボボックスメッセージは、第1のコンボボックスメッセージに依存する。つまり、2番目のコンボボックスメッセージの日付は、最初のコンボボックスで選択した要素に依存します。 この瞬間、私は最初のコンボボックスの日付が異なります。しかし、2番目のコンボボックスは機能しません。私は接続メソッドまたは何をcreareする必要がありますか? Thx!感謝する! 誰かが私に短い例を教えてもらえますか?ComboBox Qt Creator - イベントの作成方法?

答えて

5

これはかなり簡単です。コンボボックスは、currentIndexChangedシグナルを送信します。このシグナルも新しいインデックスを通知します。整数を受け取り、2番目のコンボボックスを整数(コンボボックス1の選択のインデックス)に従って変更するメソッドを記述します。

実際の例のコードスニペットを次に示します。あなたのウィンドウで

メソッド宣言/どんなクラスヘッダ:

public slots: 
    void setI1(int index); 

例えば、コンボボックス1充填信号を接続コンストラクタで:

i1Box->addItem("Neutral", 0); 
i1Box->addItem("2,856 K (Illuminant A, light bulb)", 2856); 
// ... 

connect(i1Box, SIGNAL(currentIndexChanged(int)), 
     this, SLOT(setI1(int))); 

メソッドの実装:それは期待通りに動作しない場合

void ViewerWindow::setI1(int index) { 
    // either use index directly, or, as in this case we have items holding an int: 
    int i1 = i1Box->itemData(index).value<int>(); 
    // use the value to change second combobox here 
} 

、場所を確認するために呼び出されるべきメソッド内のいくつかのデバッグ出力を印刷するには、常に便利ですそれはチェーンで間違っています。

参考:http://doc.qt.nokia.com/latest/signalsandslots.html

関連する問題