2013-07-24 3 views
1

У меня есть структура, как это:Как получить доступ членов структуры внутри QList

struct Flow 
{ 
    QLayoutItem * item; 
    bool shown; 
}; 

Я хотел бы использовать QList для этой структуры, как это:

QList<Flow> itemList; 

Следующая функция дает ошибка компиляции:

void FlowLayout::add(QLayoutItem *item) 
{ 
    itemList.item = item; 
    itemList.shown = true; 
    itemList.append(itemlist); 
} 

ошибка:

class "QList<FlowLayout::Flow *>" has no member "item"

Как получить доступ к элементу элемента и добавить его в список?

ответ

2

Сообщение об ошибке достаточно ясно: QList действительно не имеет item участник. Создать Flow объект, заполнить его и поместить в список:

void FlowLayout::add(QLayoutItem *item) 
{ 
    Flow flow; 
    flow.item = item; 
    flow.shown = true; 
    itemList.append(flow); 
} 
+0

В Qt работает с автоматическими объектами таким образом, это плохая идея. Вместо этого список должен быть 'QList ', а объекты должны быть созданы с помощью' new'. –

+1

Пожалуйста, объясните, почему это плохая идея. –

+0

К сожалению, 'Flow' не является QObject. Пожалуйста, игнорируйте. (Но чтобы ответить на вопрос в любом случае: потому что родители называют 'delete' на своих дочерних элементах. Иногда виджеты Qt вызывают' delete' сами.) –

Смежные вопросы