1

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

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。

4

2 回答 2

1

文档中还有以下内容:

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

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

于 2010-08-24T13:35:44.240 回答
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 的文件对话框,而不是本机文件对话框。

于 2010-08-24T16:12:51.480 回答