C++ 如何将qwidget添加到qlist<;qwidget>;
我有几个小部件,比如C++ 如何将qwidget添加到qlist<;qwidget>;,c++,qt,qt4,C++,Qt,Qt4,我有几个小部件,比如 QLineEdit m_namePoiFilter; QLineEdit m_ID_MSSIPoiFilter; 我想将它们添加到QWidget列表中,然后将它们全部设置为可见 我做了 QList<QWidget> m_PoiFilterWidgets; 定义QWidgets的QObject是不可复制的。这意味着您必须将它们存储在一个列表中,作为指向小部件的指针(即QList)。您需要通过指针保存它们,并且应
QLineEdit m_namePoiFilter;
QLineEdit m_ID_MSSIPoiFilter;
我想将它们添加到QWidget列表中,然后将它们全部设置为可见
我做了
QList<QWidget> m_PoiFilterWidgets;
定义QWidgets的QObject是不可复制的。这意味着您必须将它们存储在一个列表中,作为指向小部件的指针(即
QList
)。您需要通过指针保存它们,并且应该使用开销较低的容器,如std::array
。例如:
class Foo {
QLineEdit m_namePoiFilter;
QLineEdit m_ID_MSSIPoiFilter;
std::array<QLineEdit*, 2> const m_edits = {&m_namePoiFilter, &m_ID_MSSIPoiFilter};
};
class-Foo{
QLineEdit m_名称过滤器;
QLineEdit m_ID_MSSipofilter;
数组常量m_edits={&m_namePoiFilter,&m_ID_MSSIPoiFilter};
};
通过构造,此代码不会受到悬空指针的影响:m_edits
将在构造小部件之后构造,并在销毁小部件之前销毁:因此其内容始终有效
我会避免使用
QList
/QVector
,因为它们在堆上分配—在您的情况下是不必要的。您可以演示一个示例,设置可见性吗?只需迭代列表中的每个元素,并对每个元素使用setVisible(true)
或show
。
class Foo {
QLineEdit m_namePoiFilter;
QLineEdit m_ID_MSSIPoiFilter;
std::array<QLineEdit*, 2> const m_edits = {&m_namePoiFilter, &m_ID_MSSIPoiFilter};
};