void SomeClass::mySlot(MyClass *var){
...
}
void SomeClass::SomeFunction(){
MyClass *myVar;
QPushButton *button = new QPushButton(this);
connect(button, SIGNAL(clicked()), this, SLOT(mySlot(myVar)));
}
我希望 mySlot 在单击按钮时接收 myVar。 有可能做这样的事情吗?我不想将 myVar 指针存储在 SomeClass 中。
更新(我的解决方案):
void SomeClass::mySlot(){
QPushButton *button = static_cast<QPushButton*>(sender());
MyClass *myVar = qobject_cast<MyClass*>(qvariant_cast<QObject *>(button->property("myVar")));
...
}
void SomeClass::SomeFunction(){
MyClass *myVar;
QPushButton *button = new QPushButton(this);
button->setProperty("myVar", QVariant::fromValue((QObject*)myVar));
connect(button, SIGNAL(clicked()), this, SLOT(mySlot()));
}
最佳答案
不,这是不可能的。您可以使用丢弃一些参数的槽,但不能使用参数多于信号的槽。另外,连接插槽时不能传递变量。
关于Qt。是否可以在 connect SLOT() 中使用局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9127365/