如何将 qwidget 添加到 qlist<qwidget>



我有几个小部件,比如

QLineEdit           m_namePoiFilter;
QLineEdit           m_ID_MSSIPoiFilter;

我想将它们添加到 qwidget 列表中,然后将它们全部设置为可见。

我做了

QList<QWidget>      m_PoiFilterWidgets;

但我不能像这样添加项目给它

m_PoiFilterWidgets.push_back(m_namePoiFilter);

您需要通过指针保存它们,并且应该使用开销较低的容器,例如 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,因为这些在堆上分配 - 在您的情况下不必要。

定义

QWidgets的QObjects是不可复制的。这意味着您必须将它们存储在列表中作为指向小部件的指针(即 QList<QWidget *>)。

最新更新