我想将一个带有非空签名的信号连接到Lambda函数上。
我的代码如下:
****编辑****
实际上它起作用了,我搞错了QTimeLine设置。而且是的,我不需要捕获
QTimeLine *a = new QTimeLine(DURATION, this);
connect(a, &QTimeLine::valueChanged, [a,this](qreal r) mutable { this->setMaximumHeight(r);});
与SIGNAL-SLOT方法类似:
connect(a, SIGNAL(valueChanged(qreal),this,SLOT(doStuff(qreal)));
我的连接到Lambda工作正常,但不会改变this->height()
。
我哪里做错了?我应该如何编写Lambda以使其接受valueChanged
中的qreal
?
我阅读了相关文档,但找不到有用的示例。****编辑****
实际上它起作用了,我搞错了QTimeLine设置。而且是的,我不需要捕获
a
。
我试图动画化QTableWidget的自定义insertRow()
方法。
我还使lambda更改表行的高度,而不是包含小部件的高度。供参考,以下是有效的片段:QTimeLine *a = new QTimeLine(DURATION,this);
connect(a,&QTimeLine::valueChanged,[this](qreal r) mutable {
this->list->setRowHeight(0,r * ROW::HEIGHT);
});
a->start();
非常感谢您的及时回复。
connect
返回什么?它会将哪些错误写入输出? - Ezeea
。 - SingerOfTheFall