2010-08-24 31 views
1

爲什麼打開的對話框未居中到主窗口?getOpenFileNames對話框未居中到主窗口

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。

documentation

回答

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的文件對話框,而不是本地文件對話框。

+0

我想沒有選擇以本地爲中心的解決方案。任何方式thans爲崗位。 – 2010-08-24 17:36:29

1

也就是以下幾點:

在Windows對話框將旋轉阻塞模式事件循環,不會派遣任何QTimers,如果父母不爲0,然後它會定位略低於對話父母的標題欄。

這是怎麼回事?如果沒有,我猜你已經發現了Qt中的一個錯誤。

+0

這正是發生的情況。有沒有辦法避免它。我想我應該嘗試構建對話框而不是使用hendy helper getOpenFileNames()例程。 – 2010-08-24 14:50:47

+0

@Gad D Lord:我知道的唯一方法是跳過輔助程序並自己定位對話框。 – 2010-08-25 16:51:03