编辑
2023-08-05
QT
0

目录

为什么要非模态?
如何解决?

为什么要非模态?

不然这样会阻塞进程。

如何解决?

案例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 许可协议。转载请注明出处!