我想知道如何将一个单独的变量传递到一个插槽中。 我似乎无法让它工作。有什么办法解决这个问题吗?
这是我的代码:
QTimer * timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(method(MYVARIABLE)));
timer->start(4000);
最佳答案
如果您不想在您的类中声明 MYVARIABLE
,而是将其绑定(bind)到这个特定的信号/槽连接,您可以将信号连接到 C++11 lambda,使用Qt5's new singal/slot syntax然后用那个 lambda 调用你的插槽。
例如你可以这样写:
QTimer * timer = new QTimer();
connect(timer, &QTimer::timeout, [=]() {
method(MYVARIABLE);
});
timer->start(4000);
如果不能使用 C++11 和 Qt5,另一种解决方案是使用 Qt's Property System将变量附加到您的 QTimer*
。这可以通过 QObject::setProperty()
来完成.
然后在槽中你可以使用QObject::sender()
获取您的 QTimer*
并使用 QObject::property()
读取属性.
但是,请注意,这不是一个非常干净的解决方案,并且属于对属性系统的滥用。
关于c++ - 如何将额外变量传递给 Qt 插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676840/