QDialog中的不同模式

在QDialog中,有几种不同的模式可供选择,决定了对话框的行为和用户交互方式。

1.模态对话框(Modal Dialog)

使用setModal(true)或exec()方法显示的对话框。模态对话框会阻止用户与其他窗口进行交互,直到对话框被关闭。这通常用于要求用户完成某项操作后才能继续。用户必须关闭对话框才能继续与主窗口交互。
void MainWindow::on_pushButton_clicked()
{
    MyDialog dialog;
    dialog.setModal(true); // 设置对话框为模态
    dialog.exec();        // 以模态方式显示对话框
}

2.非模态对话框(Modeless Dialog)

使用show()方法显示的对话框。非模态对话框不会阻止用户与其他窗口进行交互,用户可以同时处理多个窗口。
void MainWindow::on_pushButton_clicked()
{
	MyDialog *dialog = new MyDialog;
	dialog->setWindowModality(Qt::NonModal);
    dialog->show(); // 显示非模态对话框,不阻止用户与其他窗口交互
}

其中模态对话框

不同模态模式可以通过 setWindowModality() 方法进行设置

a.应用程序模态(Application Modal)

调用setWindowModality(Qt::ApplicationModal)方法设置对话框为应用程序模态。此模式下,对话框会阻止用户与整个应用程序中的其他窗口进行交互,但允许切换到其他应用程序。
void MainWindow::on_pushButton_clicked()
{
	MyDialog dialog(this);
	dialog->setWindowModality(Qt::ApplicationModal);
	dialog.setModal(true); // 设置对话框为模态
	dialog.exec();        // 以模态方式显示对话框,它会阻止用户与应用程序中的所有窗口进行交互,直到对话框被关闭
}

b.窗口模态(Window Modal)

调用setWindowModality(Qt::WindowModal)方法设置对话框为窗口模态。在这种模式下,对话框只阻止用户与它所在的父窗口进行交互,而不是整个应用程序。
void MainWindow::on_pushButton_clicked()
{
	WindowModalDialog *dialog = new WindowModalDialog(this);
    dialog->setWindowModality(Qt::WindowModal); // 设置对话框为窗口模态
    dialog->exec(); // 使用 exec() 显示对话框,允许用户与主窗口中的其他部分交互,但阻止用户与主窗口的其他窗口交互
}

坚持信念,不仅要自己熟悉和会用,更要分享出来让大家会用!

更重要的是能力有限,诚邀大家补充,互相学习!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘气の小狼人¹º²⁴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值