2014-01-22 112 views
0

我有一個通過Qt向用戶提供GUI的項目。我使用Qt Designer(集成在Qt Creator中)設計它,現在我想添加另一個窗口來讓用戶更改設置。
Afaik我必須使用QWidget創建另一個窗口,現在我想知道如何在Qt Designer中編輯QWidget,因爲我只能設計mainwindow。
我的代碼如下所示:
Qt設計器:編輯除了mainwindow之外的其他窗口

mainwindow.hpp

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private slots: 

// various slot calls  

// action triggered when clicking an entry in the QMenu of mainwindow 
void on_action_dummy(); 

private: 
    Ui::MainWindow *ui; 
    QWidget dummy; 
}; 

mainwindow.cpp

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

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

// various implementations of the slot calls in mainwindow.hpp 

void MainWindow::on_action_dummy() 
{ 
    dummy.show(); 
} 

也許我需要爲我的新窗口自己的類? QWindow甚至是這個任務的正確課程?

回答

1

您需要添加一個新的UI文件以及標題/類。在Qt Creator的「新建文件」對話框中(Qt Designer Form Class在側欄上的「Qt」子類別下)有一個選項。然後,在程序的入口點(int main())中打開並實例化類MainWindow。喜歡的東西:

MySettingsDialog *dialog = new MySettingsDialog(this); 
dialog->show(); 

你需要小心你如何初始化它 - 主要是確保使用例如,如果你在你的類中的方法調用此指針,當它離開當前的範圍對象將生存( )。另外,您如何顯示/執行對話可能會有所不同。當你想要一個阻塞(模態)對話而不是一個新的「窗口」時,通常就是這種情況。

編輯:要處理的內存管理,可以設置WA_DeleteOnClose屬性:

dialog->setAttribute(Qt::WA_DeleteOnClose); 
相關問題