2011-04-08 41 views
3

我看到設計師生成的UI類使用任何Qt中下面的方法被嵌入,爲什麼設計器生成的嵌入爲「聚合」的UI類無法實現自定義插槽?

  1. 聚合作爲指針構件
  2. 聚合
  3. 海報,私有繼承

enter image description here

但據說第二種方法不支持自定義插槽。有人可以詳細說明這一點嗎?爲什麼我們不能實現自定義插槽,而使用聚合?

另外,詳細說明每種方法的優缺點。

+0

骨料是成分。所以基本上你可以選擇「指向」(PIMPL),「有-a」(複合)或「是-a」(繼承)。 – AJG85 2011-04-08 18:55:38

回答

1

我不認爲這是真的,第二個選項不支持自定義插槽。

在官方的Qt文檔中討論了這個選擇。請參閱http://doc.qt.io/qt-4.8/designer-using-a-ui-file.html#compile-time-form-processing

但是,請注意,本文檔中介紹的三種方法與Qt Creator中提供的三個選項不對應。文檔「直接方法」中介紹的第一種方法不是這裏的三種選擇之一 - 這種方法不能通過此設置控制的Qt Creator功能獲得。第二個選項(聚合,或「單一繼承方法」)有兩種類型,輕微的變化是ui類成員是作爲數據成員(第二種選擇)還是作爲指針成員(第一種選擇)。

我的偏好是第三種選擇,多重繼承。這也是整個C++ GUI Programming with Qt 4(第一版available for free online)使用的方式,它將這種方法稱爲最乾淨。當我寫我的課時,我並沒有真正考慮兩個對象,一個用戶界面和其他功能,我只考慮一個,多個繼承匹配最好。但該文件給出了「作爲指針成員聚集」的默認原因。

相關問題