getOpenFileNames对话框不以主窗口为中心

时间:2010-08-24 09:19:43

标签: qt qt4 centering fileopendialog opendialog

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

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

文档说应该可行:

  

此函数使用给定的父窗口小部件创建模态文件对话框。如果parent不为0,则对话框将显示在父窗口小部件的中心。

我在Windows XP SP2上使用QT 4.6.3。

2 个答案:

答案 0 :(得分:1)

同样在documentation中的内容如下:

  

在Windows上,对话框将旋转一个阻塞模式事件循环,该循环不会调度任何QTimers,如果parent不是0,那么它将把对话框放在父标题栏的正下方。

这是发生了什么事吗?如果没有,我猜你在Qt中发现了一个错误。

答案 1 :(得分:0)

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的文件对话框而不是本机文件对话框。