crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 25.4.2024, 7:05