2015-05-02 50 views
1

我有一個Qt應用程序,在點擊按鈕後加載一些文件。我正在使用QFileDialog來打開文件。每次關閉文件對話框時,應用程序主窗口(QMainWindow)都位於所有其他打開的窗口(Internet瀏覽器,資源管理器等)的後面。這是標準行爲嗎?有什麼辦法可以防止這種情況發生?我試過QMainWindow在使用QFileDialog後變爲背景

// set always on top window 
    Qt::WindowFlags flags = this->windowFlags(); 
    this->setWindowFlags(flags | Qt::WindowStaysOnTopHint); 

但它導致文件對話框在主窗口後面。

編輯: 這裏的代碼來調用文件對話框片段(方法調用它是我的課LoadData的靜態方法):

void MainWindow::on_buttonIP_clicked() 
{ 
    loaded = LoadData::OpenFiles(IPFiles); 
} 

bool LoadData::openFiles(QStringList &fileNames) 
{ 
    // open files dialog 
    fileNames = QFileDialog::getOpenFileNames(0, 
      tr("Open files"), "", "Text Files (*.txt *.dat *.points)"); 

    if (fileNames.isEmpty()) 
    { 
     return false; 
    } 

    return true; 
} 
+1

使用Qt :: WindowStaysOnTopHint是一個錯誤的解決方案,因爲它會導致很多問題。你能說明你如何調用QFileDialog(代碼)嗎? – demonplus

+0

玩windows模式。它將幫助您避免主窗口消失 – madduci

回答

3

QFileDialog::getOpenFileNames第一個參數不能是nullptr。將它設置到你的主窗口,一切都會好的。