0

以前に作成した QMap をスロット内で使用したいと考えています。私はこれに従ってみましが、それでもうまくいきませんでした (私は愚かなことをしているだけだと思います)。これが私が使用しているコードです。

コンストラクタ:

QMap <int, QList<int> > tiles;
connect(ui->lineEdit, SIGNAL(editingFinished()), this, SLOT(someSlot()));

ここで、editingFinished シグナルを送信するたびに、値が QMap にあるかどうかを someSlot に確認させ、ある場合はさまざまな条件を続行させます。問題は、QMap をスロットに渡す方法です。Qt では、パラメーター付きのスロットが許可されていないようです。

4

1 に答える 1

1

スロットは、Qt によって呼び出される単なる関数です。呼び出し方には魔法がありますが、それは単なる関数です。引数は (通常の関数と同様に) シグナルに渡され、Qt は最終的にその引数 (またはその引数のコピーである可能性が高い) を受信スロットに渡します。Qt には、接続を定義するときにシグナルと同じ数の引数をスロットに渡す必要がないロジックがありますが、それはこの議論の対象ではありません。

このような接続では、引数を名前で渡すことはできません。

tiles オブジェクトを someSlot() を実装するクラスのメンバー変数にするか、someSlot(const QMap >&) に接続されているシグナルにタイルを渡す必要があります。

私の推奨事項は、タイルをスタック変数ではなくメンバー変数にすることです

于 2013-01-23T23:46:16.907 に答える