Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Silentium от Декабрь 06, 2011, 16:48



Название: Матрешка из контейнеров
Отправлено: Silentium от Декабрь 06, 2011, 16:48
Добрый вечер. Подскажите пожалуйста. Пытаюсь оптимизировать количество переменных(а то тихонько начинают не умещаться на экране). В частности заполняю меню действиями. Хотелось бы получить массив списков меню
можно сделать так
Код:
QList<QAction *> actions_list[5]; //в этом случае вопросов как занести данные не возникает
action_list[0].append(new QAction(tr("что там"),menu_item));
теоретечиски хотелось бы вот так
QList<QList<QAction *> *> actions_list;
но как вносить данные не понятно
прошу подсказать


Название: Re: Матрешка из контейнеров
Отправлено: BRE от Декабрь 06, 2011, 16:55
Ты удивишься, но так же: :)
Код
C++ (Qt)
typedef QList<QAction*> ListAction;
QList<ListAction> actions_list;
 
actions_list.append( ListAction() );    // Добавили список
actions_list[ 0 ].append( new QAction( ... ) );
 
actions_list.append( ListAction() );    // Добавили еще один
actions_list[ 1 ].append( new QAction( ... ) );
 


Название: Re: Матрешка из контейнеров
Отправлено: Silentium от Декабрь 06, 2011, 17:19
Большое спасибо, - так не додумался.
Единственный вопрос.
почему он не понимает at при добовление, но понимает при выводе?
Код:
actions_list[0].append (работает)
actions_list.at(0).append (не работает)
 menulist.at(0)->addAction(actions_list.at(0).at(3));- работает но неработает подсказка


Название: Re: Матрешка из контейнеров
Отправлено: BRE от Декабрь 06, 2011, 17:21
Потому что at возвращает константную ссылку.


Название: Re: Матрешка из контейнеров
Отправлено: Silentium от Декабрь 06, 2011, 17:27
Спасибо за разъяснения. Вы мне очень помогли