2

私はQtプログラミングが初めてです。シグナルを発し、スロットでシグナルをキャッチするコツはつかめたのですが、通常のメソッドとしてスロットを呼び出すことは可能でしょうか?

たとえば、次のコード スニペットでは:

class someClass{
..
..
//method
    void emitsig1(int val)
    {
      emit sig1(val);
    }
public signals:
    void sig1(int a);
};

class someOtherClass{
..
..   
public slots:

    int onSig1(int a)
    {
    //some computation on a
    return a;
    }
};

int main(argc, char** argv){
..
..

someClass obj1 = new someClass();
someOtherClass obj2 = new someOtherClass();
int value = 10, result =0;
obj1.emitsig1(value);

QObject::connect(obj1, SIGNAL(sig1(int), obj2, SLOT(onSig1(int)));

int newvalue = 100;

//is it legal to do this, and if so, what value should I expect "result" to have?
result = obj2.onSig1(newvalue);
4

1 に答える 1

6

もちろん。

試してみましたか?

Qt には、シグナル/スロット システムがあります。シグナルは を使用して実行する必要がありemitますが、スロットは通常の関数 (スロットとして宣言されています) であり、関数に接続されている場合、シグナルが発行された後に自動的に実行されますconnect

于 2013-03-13T15:10:11.640 に答える