不然这样会阻塞进程。
案例1:ReadCard读取不到卡片,要弹出对话框。 mainwindow.h
c++private slots:
void onCardReadFailed(const QString &errorMessage);
mainwindow.cpp
c++MainWindow::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
c++signals:
void cardReadFailed(const QString &errorMessage);
ReadCard.cpp
c++emit cardReadFailed("未检测到身份证读取器,请检查线路!");
本文作者:墨洺的文档
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!