crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в В QList вложить разного типа контейнера
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
fortero Дата 14.6.2011, 19:29
 
Цитата(Алексей1153 @ 14.6.2011, 11:01) *
пробежаться итераторами по всем трём контейнерам и сложить из каждого в контейнер назначения - так, как нужно. Только не забыть зарезервировать нужное количество памяти в контейнере назначения


А не покажите пример?
igor_bogomolov Дата 14.6.2011, 12:20
 
Цитата(fortero @ 14.6.2011, 2:33) *
QList<QVariant> varList;
varList << QVariant(list1) << QVariant(list2) << QVariant(list3);

Но так не выходит уже когда QList<int> помещаю отказывается компилится, за QLabel я вообще молчу. Что делать?
Это потому что у QVariant нет конструктора QVariant::QVariant ( const QList<int> & val ) и т.д. Да и тип QList<int> не зарегистрирован для него.
Можно так сделать:
Раскрывающийся текст
#include <QtCore>                                                                                                                            
#include <QtGui>                                                                                                                             
                                                                                                                                             
Q_DECLARE_METATYPE(QList<int>)                                                                                                               
Q_DECLARE_METATYPE(QList<QLabel*>)                                                                                                           
                                                                                                                                             
int main(int argc, char *argv[])                                                                                                             
{                                                                                                                                            
    QApplication a(argc, argv);                                                                                                              
                                                                                                                                             
    QList<QString> list1;                                                                                                                    
    list1 <<"String1" <<"String2";                                                                                                           
                                                                                                                                             
    QList<int> list2;                                                                                                                        
    list2 << 10 << 20;                                                                                                                       
                                                                                                                                             
    QList<QLabel*> list3;                                                                                                                    
    list3 << new QLabel("LB1") << new QLabel("LB2");                                                                                         
                                                                                                                                             
    QVariant v2;                                                                                                                             
    v2.setValue(list2);                                                                                                                      
                                                                                                                                             
    QVariant v3;                                                                                                                             
    v3.setValue(list3);                                                                                                                      
                                                                                                                                             
    QVariantList varList;                                                                                                                    
    varList << QVariant(list1) << v2 << v3;                                                                                                  
                                                                                                                                             
    return 0;                                                                                                                                
}
Алексей1153 Дата 14.6.2011, 11:01
  пробежаться итераторами по всем трём контейнерам и сложить из каждого в контейнер назначения - так, как нужно. Только не забыть зарезервировать нужное количество памяти в контейнере назначения
fortero Дата 14.6.2011, 1:33
  Доброе время суток!
У меня есть необходимость контейнеры такого типа к примеру:
QList<QString> list1;
list1 <<"String1" <<"String2";
QList<int> list2;
list2 << 10 << 20;
QList<QLabel*> list3;
list3 << new QLabel("LB1") << new QLabel("LB2");

Все три контейнера сложить в один контейнер как это сделать?
Я думал так:
QList<QVariant> varList;
varList << QVariant(list1) << QVariant(list2) << QVariant(list3);

Но так не выходит уже когда QList<int> помещаю отказывается компилится, за QLabel я вообще молчу. Что делать? Или есть более изящный вариант решения данной задачи???
Спасибо за внимание!
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 14.7.2025, 11:00