【问题标题】:QT5 connect signal to functionQT5 连接信号到功能
【发布时间】:2017-02-14 12:28:17
【问题描述】:

所以,我希望制作一个在 QT5 中按下时会变平的按钮。我读过这个
https://woboq.com/blog/new-signals-slots-syntax-in-qt5.html
看来我应该能够在不制作自己的按钮类的情况下做到这一点。所以,我有

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
我的问题是;我读错了这个新语法吗?我只能连接到静态函数吗?

【问题讨论】:

    标签: c++ qt qt5


    【解决方案1】:

    您正在尝试连接一个没有实例的方法,例如使用lambda 来捕获按钮实例:

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

    未测试。

    【讨论】:

    • 我认为让我走上了正确的道路。 [&button]() {button->setFlat(true);} 应该设置平坦(我的错)。这会编译但也会在按下按钮时崩溃。
    • 知道了。现在使用[=]() {button->setFlat(true);} 作为最终参数,一切正常。你是男人男人!
    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多