2017-01-03 54 views
1

我有幾個小部件,像如何添加到QWidget的<qwidget>的QList

QLineEdit   m_namePoiFilter; 
QLineEdit   m_ID_MSSIPoiFilter; 

我想將它們添加到qwidgets的列表,然後將所有的人都看到。

我已經

QList<QWidget>  m_PoiFilterWidgets; 

但我不能將項目添加到它像

m_PoiFilterWidgets.push_back(m_namePoiFilter); 

回答

1

你需要通過一個指針來保持這些,你應該使用一個較低的架空容器,如std::array。例如: -

class Foo { 
    QLineEdit m_namePoiFilter; 
    QLineEdit m_ID_MSSIPoiFilter; 
    std::array<QLineEdit*, 2> const m_edits = {&m_namePoiFilter, &m_ID_MSSIPoiFilter}; 
}; 

此代碼是從懸空施工指針安全:構造小部件後m_edits將建造和小部件被破壞之前就會被破壞:因此它的內容始終有效。

我會避免QList/QVector因爲這些分配在堆上 - 不必要的在你的情況。

0

的QObject,從QWidgets定義,是不可複製的。這意味着您必須將它們存儲在列表中作爲指向小部件的指針(即QList<QWidget *>)。

+0

你能舉個例子嗎,設置可見度? – Andre

+0

只需遍歷列表中的每個元素,併爲每個元素使用'setVisible(true)'或'show'。 – owacoder