1

私の Qt アプリケーションでは、QVBoxLayouts で「アンケート」の「質問」を動的に作成しています。質問には、ブール、テキスト、ラジオの 3 種類があります。

ユーザーがアンケートに「質問を追加」すると、QComboBox が表示されます。この QComboBox のインデックス/テキストが編集されると、発行された SIGNAL に基づいて行動したいと思います。

私は(古いAndroidプロジェクトから)Javaのようなものが欲しいです:

button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            //Code to run...
        }
    });

次のように Qt/C++ で同じものを使用することは可能ですか?

connect(qvectorOfComboBoxes.at(qvectorOfComboBoxes.end()), SIGNAL(currentTextChanged(QString)),
            this, SLOT(
                    void comboBoxTextChanged(QString newComboxBoxText)
                    {
                        //This doesn't work
                    } )) ;

ここの別の投稿から、理想的なアプローチQSignalMapperであると理解していますが、上記と同様の方法でタスクを実行することを望んでいました。

通常、私はここまたは関連するGoogle検索から答えを見つけます(これの名前がわからないので、おそらく間違ったものを検索しています)。ありがとう

4

1 に答える 1

1

Qt5 で C++11 対応のコンパイラを使用すると、ここで説明されているように、ラムダをスロットとして使用できます。

connect(sender, SIGNAL(signal(QString)), [](QString newComboxBoxText) {
    // add your code here
});

それ以外の場合は、これで十分な情報が必要な場合は、信号を送信したsender()を照会するために使用できます。それを使用してくださいQObject*にキャストするには、null ではないことを確認してください。(他の型に接続されているというコンパイル時エラーは発生しません。)QComboBox*qobject_cast<QComboBox*>Q_ASSERT

于 2013-07-03T11:31:14.887 に答える