2015-10-04 59 views
0

我QtCreator 5.5在Mac上使用C++和我在這是新。我有一個MainForm窗口。我想在裏面顯示一個對話框,但在它自己的UI設計器中分別繪製它。然後,在運行時,我的代碼將拉動其他用戶界面並將其顯示在該窗口內。的Qt/C++技術來顯示嵌入式對話框

想象一下,例如一個主應用程序窗口。你點擊一個按鈕,你需要看到一個確認對話框。通常你可以用一個單獨的窗口來做到這一點。相反,我希望它在運行時內聯,以便在主窗口上顯示它像一個小部件。

當然,我可以在我的現有窗口頂部的窗口小部件中繪製我的對話框,但是這打敗了我希望能夠在其自己的設計器窗口中調整它的點,並在必要時在主窗口中加載它當我需要它時。

是什麼在QtCreator和C++的技術來做到這一點?

+0

這就是所謂的QDialogBox – user3528438

+0

@ user3528438了QDialog和QMessageBox提示顯示在頂部的主窗口模式窗口。我在尋找的主窗口中內嵌的東西,但還沒有讓我用一個單獨的設計師爲它。我發現forum.qt.io的技術和我將它張貼在這裏的時刻。 – Volomike

回答

1
  1. 打開QtCreator。這項任務只能通過那裏完成。

  2. 假設你有一個定期Qt的Widget應用程序,你只是需要在UI設計師添加在主窗口的centralWidget一個QWidget的控制。

  3. 下一步,單擊編輯UI設計師,然後右擊形式。選擇新增...

  4. 在打開的對話框中,選擇Qt的>Qt設計Form類,然後單擊選擇...

  5. 選擇的Widget和然後去其餘的默認值。這會創建一個名爲的窗口小部件,並且form.hform.cpp也將被添加到您的項目中。

  6. 現在找到form.ui並打開它在Qt設計器。在QWidget窗體上添加一個堆疊的窗口小部件控件。將其大小設置爲與父窗口小部件相同的大小。接下來,粘堆積Widget控件的第一頁上標籤控制。爲了證明這一點,這個標籤將是臨時的。您將其設置爲「測試」的文本。現在關閉設計師。

  7. 翻轉回你主窗口UI文件,發現QWidget的您添加和右擊它。選擇升級...並出現一個對話框。在該對話框中,設置升級的類名稱表格然後設置標題文件form.h。將所有其他內容保留默認值,然後點擊添加,然後升級

  8. 您可能希望看到在QWidget的以前添加在您的主窗口立即改變。然而,這不是不幸的。您只能在運行時看到更改。所以,現在你應該運行你的應用程序在Qt造物主。你會看到它的運行時間,你的小部件現在包含你創建的form.ui組件的內容。

  9. 現在,這裏是它變得有趣。現在,您可以借鑑一下form.ui所有內嵌模式對話框,只是把它們放在你堆積的Widget控制的不同頁面。您還可以設置小部件的屬性,以便容器的背景不透明且不透明(創建背景調光器),然後在運行時將尺寸調整爲主窗口的大小。當你需要切換到不同的對話框中,可以對StackedWidget項目使用setCurrentWidget()setCurrentIndex()像這樣:

QStackedWidget *w = ui->widget->findChild<QStackedWidget *>("stackedWidget"); 
w->setCurrentIndex(1); 

在這個例子中,我對我的主窗口一個QWidget的控制簡單地命名爲widget。然後我發現它的控制器叫做stackedWidget。一旦我有它,我用它的setCurrentIndex(x)方法來改變控件的頁面,以顯示我需要的人。請記住,這是一個從零開始的索引。所以,(1)將是第2頁。