gpt4 book ai didi

c++ - QFile 对话框不显示在顶部

转载 作者:搜寻专家 更新时间:2023-10-31 02:09:35 26 4
gpt4 key购买 nike

我有几个窗口标志为 WindowStaysonTopHint 的对话框。当我打开 QFileDialog 时,它显示在这些对话框的底部。如何为 QFileDialog 设置窗口标志。我使用以下代码在顶部显示对话框,但它不起作用。

> QFileDialog *dialog=new QFileDialog(this);
>
> dialog->setWindowModality(Qt::ApplicationModal);
>
> dialog->setModal(true);
> dialog->setWindowFlags(Qt::WindowStaysonTopHint);
> dialog->getExisitngDirectory(this,tr("Directory"),"\home",QFileDialog::ShowDirsOnly);

最佳答案

QFileDialog::getExistingDirectory() 是一个静态函数,这意味着它不会像您的代码看起来那样在实例 dialog 上调用。这也意味着您在 dialog 实例上调用的函数无效。

文档指出“getExistingDirectory() 是一个方便的函数...”因此您可以通过使用 QFileDialog 的实例获得相同的效果。 getExistingDirectory() 的源代码大致如下所示

QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
args.directory = QFileDialogPrivate::workingDirectory(dir);
args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory);
args.options = options;
// create a qt dialog
QFileDialog dialog(args);
if (dialog.exec() == QDialog::Accepted) {
return dialog.selectedFiles().value(0);
}
return QString();

因此您必须做类似的事情并添加您的 WindowFlags 设置。它可能看起来像这样(还没有测试过):

QFileDialog dialog(parent, caption, directory, filter);
dialog.setFileMode(DirectoryOnly);

dialog.setWindowModality(Qt::ApplicationModal);
dialog.setModal(true);
dialog.setWindowFlags(Qt::WindowStaysonTopHint);

if (dialog.exec() == QDialog::Accepted) {
return dialog.selectedFiles().value(0);
}
return QString();

关于c++ - QFile 对话框不显示在顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com