2017-02-14 53 views
1

所以,我期待在QT5中按下按钮变得平坦。我读过这
https://woboq.com/blog/new-signals-slots-syntax-in-qt5.html
而且我似乎应该能够做到这一点,而无需制作我自己的按钮类。所以,我有QT5连接信号到功能

QPushButton* button = new QPushButton("text", parent); QObject::connect(button, &QPushButton::clicked, button, &QPushButton::isFlat(true));
和我越来越
error: call to non-static member function without an object argument
我的问题是;我阅读这个新的语法错了吗?我只能连接到静态功能吗?

回答

3

你试图连接任何情况下的方法,使用lambda例如用于捕获按钮实例:

QObject::connect(button, &QPushButton::clicked, button, 
       [&button]() {button->setFlat(true)}); 

未经测试。

+0

让我走上正确的轨道,我认为。 '[&button](){button-> setFlat(true);}' 应该是setflat(我的坏)。这编译,但也按钮按下时崩溃。 – Darakian

+0

@达拉斯,什么是错误代码? – Netwave

+0

明白了。现在使用'[=](){button-> setFlat(true);}'作为最终参数,一切都很好。你是男人! – Darakian