为什么打开的对话框不在主窗口中?

void MainWindow::on_FileOpenAction_triggered()
{
    QStringList fileNames = QFileDialog::getOpenFileNames(
        this, 
        "Open Image",
        QApplication::applicationDirPath(), 
        "Images (*.jpg);;All Files (*.*)"
    );
}

文档说应该有效:

此功能使用给定的父窗口创建模态文件对话框。如果父母不是0,则将显示对话框以父窗口为中心。

我在Windows XP SP2上使用QT 4.6.3。

有帮助吗?

解决方案

QT中有一个错误或文档中的错误。如果您想要一个集中的对话框,请避免使用静态功能并以此方式创建对话框:

QFileDialog dialog(
    this, 
    "Open Image",
    QApplication::applicationDirPath(),
    "Images (*.jpg);;All Files (*.*)");
dialog.setFileMode(QFileDialog::ExistingFiles);
QStringList fileNames;
if (dialog.exec())
    fileNames = dialog.selectedFiles();

请注意,这使用QT的文件对话框,而不是本机文件对话框。

其他提示

也在 文档 如下:

在Windows上,对话框将旋转一个不会派遣任何QTimers的模态事件循环,如果父母不是0,则将对话框放置在父母的标题栏下方。

这是发生什么吗?如果没有,我想您在QT中发现了一个错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top