【问题标题】:qt Window make no modal (Windows)qt Window 没有模式(Windows)
【发布时间】:2021-05-31 05:22:33
【问题描述】:

我的 qt 应用程序中有两个窗口,一个是主窗口,一个是设置窗口。当我创建设置窗口时,我不能使用主窗口,因为我的新窗口是模态的,我需要使用两个窗口。 如何让我的窗口没有模式?


我使用这个代码:

String inputDir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), 
"/home", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);

我按下我的栏并显示我的设置窗口

//Input dir
void SecondWindow::on_pushButton_3_clicked()
{

    inputDir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), "/home", QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);


    qDebug() << inputDir;

    ui->lineEdit_3->setText(inputDir);
}

我创建此表单以获取我选择的目录。作为这段代码的结果:我创建了一个模态设置窗口。


我看到了 show(),但我不明白如何在我的情况下使用 show()。

如何将我的新设置窗口设为模态窗口?

【问题讨论】:

  • 我补充一些信息,你觉得呢?
  • 第二个窗口的文件(目录)对话框是非模态的吗?如果是这样,你的使命就失败了。 QFileDialog::getExistingDirectory(): 这是一个方便的静态函数,它将返回用户选择的现有目录。 ... 这个函数创建一个modal 文件对话框 特别是在 Windows 上,这是使用 Windows API 的本机对话框的包装器。对于非模态文件对话框,您必须实例化QFileDialog。 (但是,在这种情况下,它不再是原生对话框。)

标签: c++ windows qt modal-dialog


【解决方案1】:

你的第二个窗口应该继承 QWidget (:public QWidget) 并且你可以使用它的 show() 方法来显示它

QWidget* w = new QWidget();
w->show();

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 2011-06-07
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2018-02-16
    相关资源
    最近更新 更多