借助 Qt 5 的信号槽语法,我们可以将一个对象的信号连接到 Lambda 表达式,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// !!! Qt 5 #include <QApplication> #include <QPushButton> #include <QDebug> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Quit"); QObject::connect(&button, &QPushButton::clicked, [](bool) { qDebug() << "You clicked me!"; }); button.show(); return app.exec(); } |
注意这里的 Lambda 表达式接收一个 bool 参数,这是因为QPushButton
的clicked()
信号实际上是有一个参数的。Lambda 表达式中的qDebug()
类似于cout
,将后面的字符串打印到标准输出。如果要编译上面的代码,你需要在 pro 文件中添加这么一句:
1 |
QMAKE_CXXFLAGS += -std=c++0x |
然后正常编译即可。
时间: 2024-10-21 00:23:37