2012-07-23 28 views
4

在我的應用程序中,我使用QT創建器2.4.1在其中設計了三個帶有控件的QTabWidget。現在我想通過創建新的類來將這些頁面的功能從MainWindow中分離出來。如何將標籤頁的功能從Qt主窗口類中分離出來

我的問題是如何訪問我的新類中的MainWindow :: ui實例?這是私下宣佈的。

它是一個Qt的桌面應用程序和平臺是QT 4.8.1/WIN 7

+1

如果您需要從標籤內訪問'MainWindow :: ui',你還沒有真正地分開功能。這表明重新考慮設計可能是一個好主意。 – tmpearce 2012-07-24 05:21:57

+0

是的,我沒有分開的功能,任何建議設計實現這一目標? – Prady 2012-07-24 05:28:04

+0

如何做到這一點的細節遠遠超出了這類論壇的範圍,而且在沒有更多瞭解它的情況下,沒有人能夠告訴你如何做到這一點。首先問自己:「爲什麼選項卡需要了解主要的用戶界面?」然後你可以將它需要知道的東西移動到標籤本身,或者通過函數(或「信號/插槽」連接)傳遞信息。 – tmpearce 2012-07-24 05:32:15

回答

1

你不能直接訪問主窗口的UI在你的標籤。因爲你的QTabWidget是MainWindow的孩子(這是應該如何實現的,並假設你這樣做了)。

但是,您可以通過信號和插槽實現此目的。您可以通過向單個選項卡發出的信號寫入插槽來在MainWindow中執行操作。

OR

你可以寫在主窗口的方法,將工作在它的UI。並從標籤小工具調用它 -

this->parent->parent->uiMethod(); 

// this(Tab) -> parent(QTabWidget) -> parent(MainWindow) -> [related method] 
+0

我已經在選項卡中使用了許多控件的信號和插槽,因爲這3個選項卡頁面中存在許多控件,所以我的MainWindow.cpp放棄了爲所有控件實施的代碼。所以我想分割每個選項卡的功能。我不確定你提供的第二種解決方案能否解決我的問題。或者我錯過了什麼來了解您的解決方案? – Prady 2012-07-23 08:49:03

+0

如果您在各個選項卡中有控件,那麼您不能在這些選項卡本身中處理它們嗎?嘗試通過信號和插槽減少對MainWindow的依賴。 – EngineeredBrain 2012-07-25 07:41:13

+0

好吧,我有一個ui文件,裏面有所有的控件,現在我把功能分成不同的類,現在它很容易維護信號和插槽。謝謝。 – Prady 2012-07-27 05:55:46

相關問題