找到两个带头节点单链表的共同后缀起始位置
2025/12/26 20:48:41
setWindowModality()// 设置为应用程序模态(阻止与所有窗口交互) widget->setWindowModality(Qt::ApplicationModal); // 设置为窗口模态(只阻止与父窗口交互) widget->setWindowModality(Qt::WindowModal); // 设置为非模态 widget->setWindowModality(Qt::NonModal); // 示例 QWidget* modalWidget = new QWidget(); modalWidget->setWindowModality(Qt::ApplicationModal); modalWidget->show();exec()方法(像 QDialog 一样)// 自定义 QWidget 子类,添加 exec() 方法 class ModalWidget : public QWidget { Q_OBJECT public: ModalWidget(QWidget* parent = nullptr) : QWidget(parent) { setWindowFlags(Qt::Dialog); setWindowModality(Qt::ApplicationModal); } int exec() { show(); m_eventLoop.exec(); return m_result; } public slots: void accept() { m_result = QDialog::Accepted; close(); } void reject() { m_result = QDialog::Rejected; close(); } protected: void closeEvent(QCloseEvent* event) override { m_eventLoop.quit(); QWidget::closeEvent(event); } private: QEventLoop m_eventLoop; int m_result = QDialog::Rejected; }; // 使用 ModalWidget* widget = new ModalWidget(); if (widget->exec() == QDialog::Accepted) { qDebug() << "用户接受了"; }setWindowModality+QEventLoopFormVideoSnap *widget = new FormVideoSnap(nullptr); widget->setWindowModality(Qt::ApplicationModal); widget->setAttribute(Qt::WA_DeleteOnClose); QEventLoop loop; // 连接自定义aboutToClose 信号 QObject::connect(widget, &FormVideoSnap::aboutToClose, [this](const QString& filePath) { m_lastSnapshotFilePath = filePath; }); QObject::connect(widget, &FormVideoSnap::destroyed, &loop, &QEventLoop::quit); widget->show(); loop.exec(); // 阻塞直到窗口关闭