Qt插槽可以作为普通方法使用吗?

Qt插槽可以作为普通方法使用吗?,qt,signals,slot,Qt,Signals,Slot,我不熟悉Qt编程。我知道如何发出信号,并使用插槽捕捉信号,但是否可以将插槽作为常规方法调用 例如,在以下代码段中: class someClass{ .. .. //method void emitsig1(int val) { emit sig1(val); } public signals: void sig1(int a); }; class someOtherClass{ .. .. public slots: int onS

我不熟悉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);
当然

你试过了吗

在Qt中,您有一个信号/插槽系统。
必须使用
emit
执行信号,但插槽是普通功能(声明为插槽),当它们与
connect
功能连接时,可以在发出信号后自动执行。

实际上,可以在不使用emit的情况下执行信号。emit只是一个预处理器宏,它扩展为零,所以信号和插槽都可以作为常规方法调用。+1你说得对,是的,emit只是语法上的糖