不然这样会阻塞进程。
案例1:ReadCard读取不到卡片,要弹出对话框。
mainwindow.h
cprivate slots: void onCardReadFailed(const QString &errorMessage);
mainwindow.cpp
cMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { connect(readCard, &ReadCard::cardDataRead, this, &MainWindow::onCardDataRead); } void MainWindow::onCardReadFailed(const QString &errorMessage) { // 在主线程中创建非模态的 QMessageBox QMetaObject::invokeMethod(this, [=]() { QMessageBox messageBox(QMessageBox::Warning, "警告", errorMessage, QMessageBox::Ok, this); messageBox.exec(); // 执行非模态对话框 emit startCardTest(); }); }
此时我只需要在ReadCard任意需要弹出对话框的地方发出信号即可。
ReadCard.h
csignals: void cardReadFailed(const QString &errorMessage);
ReadCard.cpp
cemit cardReadFailed("未检测到身份证读取器,请检查线路!");
本文作者:墨洺的文档
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!