• 2988阅读
  • 1回复

如何理解这个槽函数 [复制链接]

上一主题 下一主题
离线苍井空
 

只看楼主 倒序阅读 楼主  发表于: 2014-10-17
connect(timer, &QTimer::timeout, [=]() {
        static int sec = 0;
        lcdNumber->display(QString::number(sec++));
    });

connect(button, &QPushButton::clicked, [=]() {
        timer->start(1);
        for (int i = 0; i < 2000000000; i++);
        timer->stop();
    });
离线stlcours

只看该作者 1楼 发表于: 2014-10-17
C++11 Lambda表达式

至此之前,我们所有的示例都是基于C++98标准的。但是,如果你的编译器支持C++11,我还是强烈建议你使用一些这个语言的新特性。现在,Lambda表达式至少被MSVC 2010、GCC 4.5、clang 3.1这几个编译器支持。不过对于后面两个编译器,你需要在编译时加上-std=c++0x参数。

然后我们就可以这样写代码了:

void MyWindow::saveDocumentAs() {
    QFileDialog *dlg = new QFileDialog();
    dlg->open();
    QObject::connect(dlg, &QDialog::finished, [=](int result) {
        if (result) {
            QFile file(dlg->selectedFiles().first());
            // ... 在这里保存文档 ...
        }
        dlg->deleteLater();
    });
}
这种语法允许我们更方便地编写异步代码。
快速回复
限100 字节
 
上一个 下一个