2010-05-12 128 views
0

到目前爲止,我只有我的主窗口彈出其他窗口是QDialogs,我沒有得到它與QWidget一起工作。我想要顯示的另一個窗口是用表單編輯器設計的,然後包裝在一個名爲ResultViewer的類中,該類擴展了QWidget(而不是QDialog)。我想要的是讓ResultViewer在一個單獨的窗口中顯示它的用戶界面。現在,當我嘗試顯示它時,ResultViewer UI會彈出到主窗口頂部的主窗口中。如何讓另一個窗口彈出來擴展QWidget而不是QDialog?

我使用以顯示它的代碼是這樣的(在我mainwindow.cpp文件)

ResultViewer * rv = new ResultView(this); 
rv->show(); 

的構造函數ResultViewer看起來像這樣

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

我已經通過看QWidget文檔有點但是我能找到的唯一可能是QWidget::window()函數,但是這個解釋不是很清楚,它只是給出了一個改變窗口標題的例子。

回答

3

如果你只是想顯示第二個窗口在應用程序中,有兩個頂級部件嘗試改變:

ResultViewer * rv = new ResultView(this); 
rv->show(); 

ResultViewer * rv = new ResultView(); 
rv->show(); 

就以QWidget的構造函數的文檔http://doc.trolltech.com/4.6/qwidget.html#QWidget一看就明白爲什麼要這樣做。

順便說一下,QDialog是你的應用程序中額外的窗口的基礎。我不明白你爲什麼不想使用它。

+0

感謝VestniK,深入瞭解它我認爲我可能切換到QDialog。原本我不想使用它,因爲它們通常在打開時擋住主窗口,但顯然這很容易改變。 – 2010-05-12 22:00:39

+1

Dialod可以是模態和非模態的。如果你使用QDialog :: show()(實際上這個函數是從QWidget繼承的),它是非模態的(不會阻塞你的主窗口),如果你使用QDialog :: exec(),你的對話框是模態的(阻止你的主窗口)。 – VestniK 2010-05-12 22:05:13

相關問題