Files
scuc-qt-course/p03/ch06/modeless_dialog_stack.cpp
T
张宗平 1f66098277 Qt 示例窗口默认不再自动退出,仅离屏验证时自动退出
p03/ 生成产物与 docs/teaching/examples/ 手工示例里的 QTimer::singleShot
自动退出逻辑,从"始终 200ms 后退出"改为"仅当 QT_QPA_PLATFORM=offscreen
时才退出"。正常运行(有显示环境)窗口保持打开,需手动关闭;离屏自动化
验证(tools/run_qt.sh + QT_QPA_PLATFORM=offscreen)行为不变。

p03/ 改动来自重新生成 tools/gen_part3.py(AUTO_QUIT 常量加 qgetenv 判断),
未手改生成产物。QCoreApplication 控制台风格示例(qfile_basic 等)本就
执行完即退出,不受影响。
2026-07-02 16:14:49 +08:00

40 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// ============================================================================
// modeless_dialog_stack — Qt 桌面示例
// 来源:川大 C++/LinuxC wiki「02.Qt方向」
// 原文片段:[58954535:1]
// 说明:本文件由 gen_part3.py 从 wiki 片段生成(必要时补 main/QApplication
// 外壳、include、修正笔误)。详见 docs/ERRATA.md。
// 离屏验证:QT_QPA_PLATFORM=offscreen tools/run_qt.sh <target>(自动退出)
// ============================================================================
#include <QApplication>
#include <QWidget>
#include <QDialog>
#include <QTimer>
class DemoWidget : public QWidget {
Q_OBJECT
public:
DemoWidget(){ doDemo(); }
private slots:
void doDemo(){
QDialog dialog(this);
dialog.setWindowTitle(tr("Hello, dialog!"));
dialog.show();
}
};
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
DemoWidget w;
w.show();
// 仅在离屏自动化验证时(QT_QPA_PLATFORM=offscreen200ms 后自动退出;
// 正常运行(有显示环境)窗口保持打开,不自动退出。
if (qgetenv("QT_QPA_PLATFORM") == "offscreen") {
QTimer::singleShot(200, &app, &QApplication::quit);
}
return app.exec();
}
#include "modeless_dialog_stack.moc"