2016-02-04 63 views
1

我是QT設計師的新手,想從操作中打開特定的窗口。我已經搜索過,我看過的所有例子都像this answer,只給出一個通用的新窗口,而不是已經預定義的窗口。現在,我正試圖在文件對話框完成後立即打開一個名爲listcsv的預定義窗口(帶有標題,源代碼和表單)。但是代碼只是彈出一個通用的空白窗口,而不是我需要的。QT設計師:打開特定窗口的動作

這裏是我的主窗口的.cpp:

#include "csv_helper.h" 
#include "ui_csv_helper.h" 
#include "listcsv.h" 
#include "ui_listcsv.h" 
#include <QFileDialog> 
#include <QWindow> 

CSV_helper::CSV_helper(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::CSV_helper) 
{ 
    ui->setupUi(this); 
} 

CSV_helper::~CSV_helper() 
{ 
delete ui; 
} 

void CSV_helper::on_buttonBox_accepted() 
{ 
    QFileDialog::getOpenFileName(this, tr("Open CSV"), "/Users/Dropbox", tr("CSV Files (*.csv)")); 

    QWidget *listcsv = new QWidget; 
    listcsv->show(); 
    hide(); 

} 

我感到沮喪,這是在這麼簡單的東西,但沒有在互聯網上似乎給出直接的答案。

編輯:解決,感謝約翰elemans。只需修改一些東西。

void CSV_helper::on_buttonBox_accepted() 
{ 
    QFileDialog::getOpenFileName(this, tr("Open CSV"), "/Users/Dropbox", tr("CSV Files (*.csv)")); 

    ListCSV *msd; 
    msd = new ListCSV(); 

    msd->show(); 
} 
+0

您定義了一個名爲ListCSV的小部件,對吧?所以你應該做'auto * myListCSVWidget = new ListCSV();'或者更好的是沒有指針ListCSV myListCSVWidget''。 –

+0

檢查了這兩個。前者給出了一個警告:auto是C++ 11的擴展,運行似乎什麼都不做;後者沒有提出警告,但也沒有做任何事。 – eijen

+0

是的,你需要爲自動設置C++ 11標誌,它不會傷害。它也不會傷害顯示你正在談論的小工具的代碼... –

回答

0

在窗體文件中定義新窗口的佈局,使其名稱與您的對話框匹配。 使用基本類型的QDialog創建一個新的C++類,例如稱爲mySpecialDialog。它應該參考表格文件如下: Private: UI :: mySpecialDialog ui;

然後在你的主代碼,當你想要的對話框中,...

mySpecialDialog *msd; 

    msd = new mySpecialDialog(); 

    if (msd->exec() == QDialog::Accepted) 
    { 
     ... code 
    } 
    else 
    { 

    } 

瞧。

+0

謝謝!我不得不修改一下,但我得到了我需要的東西,看到我的帖子上面。 – eijen