2014-11-23 30 views
0

即時通訊使用Qt Creator 3.2.1。 使用Qt設計器我做了基本設計:通過添加一個普通的QWidget並將其提升到我的自定義小部件,我在我的mainwindow中添加了一個自定義小部件(CustomWidget小部件)。 在那個自定義小部件中,我添加了一個QGraphicsView(QGraphicsView視圖)。Qt設計師:嵌套部件不是會員?

Qt設計的對象的瀏覽器正確地顯示的項目的層次結構:視圖內插件插件主窗口

然而,由形式產生的ui_mainwindow.h給我:

// in ui_mainwindow.h 
class Ui_MainWindow 
{ 
public: 
    CustomWidget *widget; 
    QGraphicsView *view; 
    // ... 
}; 

當我真的很期待:

// in ui_mainwindow.h 
class Ui_MainWindow 
{ 
public: 
    CustomWidget *widget; 
    // ... 
}; 

// in customwidget.h 
class CustomWidget 
{ 
public: 
    QGraphicsView *view; 
    // ... 
}; 

是另一個小部件的嵌套小部件不應該是一個它的成員?

如何調整自己的一流的設計在Qt設計使視圖部件的會員嗎?

回答

0

Qt中,用於定義小部件層次結構的規則不是包含而是父母。 WidgetType1類型的widget1將內部WidgetType2類型的widget2繪製如果widget2widget1父,而不是如果類WidgetType2包含WidgetType2類型的成員。 widget2可以通過在widget2的構造函數中將widget2作爲父項或通過使用widget2.setParent(widget1);而設置爲widget1的父項。佈局也可以定義Parent/child層次結構。

是的,您可以擁有包含和定義其他對象的對象類型,但是如果您未將this作爲父對象傳遞給成員對象,則成員對象將不會在容器類類型小部件中繪製。

在你的情況下,不需要有多個類,你只需要讓你想要成爲孩子的物體成爲父母的對象。欲瞭解更多信息,我建議閱讀Layout ManagementObject Trees & OwnershipQt文檔。

+0

感謝您的回答。小部件繪圖不是問題。 問題是,Qt設計器不包含嵌套的小部件到父窗口小部件中,這在我看來是有意義的。 想要創建CustomWidget的多個實例的圖像。 只有在它包含QGraphicsView *視圖才更有意義。 – willard 2014-11-24 10:42:40