QT5 连接信号到功能

Posted

技术标签:

【中文标题】QT5 连接信号到功能【英文标题】:QT5 connect signal to function 【发布时间】: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 我的问题是;我读错了这个新语法吗?我只能连接到静态函数吗?

【问题讨论】:

【参考方案1】:

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

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

未测试。

【讨论】:

我认为让我走上了正确的道路。 [&button]() button->setFlat(true); 应该设置平坦(我的错)。这会编译但也会在按下按钮时崩溃。 知道了。现在使用[=]() button->setFlat(true); 作为最终参数,一切正常。你是男人男人!

以上是关于QT5 连接信号到功能的主要内容,如果未能解决你的问题,请参考以下文章

Qt5跨线程信号和槽

Qt5 UI信号槽自动连接的控件重名

Qt5:串口signal-slots机制信号连接错槽

Qt 信号槽

将 Worker Thread 信号与 MainWindow 插槽连接时出错(Qt5)

QT5线程关闭