2010-08-24 2 views
1

Почему открытое диалоговое окно не сосредоточено в главном окне?Диалоговое окно getOpenFileNames не сосредоточено в главном окне

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

В документации сказано, что должно работать:

Эта функция создает модальное диалоговое окно файла с данным родительским виджетом. Если parent не равен 0, диалоговое окно будет показано по центру над родительским виджетами.

Я использую QT 4.6.3 для Windows XP SP2.

ответ

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

Я думаю, что нет возможности для решения с ориентацией по центру. В любом случае, для этой должности. –

1

Также в documentation является следующее:

В Windows диалог будет крутиться блокирующий модальный цикл событий, который не будет рассылкой QTimers, и если родитель не 0, то он будет позиционировать диалог чуть ниже строка заголовка родителя.

Это то, что происходит? Если нет, я бы предположил, что вы обнаружили ошибку в Qt.

+0

Это именно то, что происходит. Есть ли способ избежать этого. Думаю, я должен поэкспериментировать с построением диалога, вместо того, чтобы использовать процедуру hendy helper getOpenFileNames(). –

+0

@Gad D Lord: Единственный способ, которым я знаю, - пропустить вспомогательную рутину и позиционировать диалог самостоятельно. –

 Смежные вопросы

  • Нет связанных вопросов^_^