Russian Qt Forum

Qt => Общие вопросы => Тема начата: izoomer от Январь 08, 2007, 18:45



Название: [QT-4.2] Ругается компилятор на QVariant::value
Отправлено: izoomer от Январь 08, 2007, 18:45
почему ругается колмпилятор на такой код
Код:

109:   QVariant data_ = myIndex.model()->data(myIndex, Qt::UserRole);
110:    if ( data_.canConvert<QFileInfo>() )
111:         QFileInfo FileInfo_ = data_.value<QFileInfo>();


не компилируется и выдает такое компилятор

Код:

/usr/local/Trolltech/Qt-4.2.0/include/QtCore/qmetatype.h: In static member
   function `static int QMetaTypeId2<T>::qt_metatype_id() [with T = QFileInfo]
   ':
/usr/local/Trolltech/Qt-4.2.0/include/QtCore/qmetatype.h:178:   instantiated from `int qMetaTypeId(T*) [with T = QFileInfo]'
/usr/local/Trolltech/Qt-4.2.0/include/QtCore/qvariant.h:553:   instantiated from `bool qVariantCanConvert(const QVariant&) [with T = QFileInfo]'
/usr/local/Trolltech/Qt-4.2.0/include/QtCore/qvariant.h:295:   instantiated from `bool QVariant::canConvert() const [with T = QFileInfo]'
mainwindow.cpp:110:   instantiated from here
/usr/local/Trolltech/Qt-4.2.0/include/QtCore/qmetatype.h:168: error: 'struct
   QMetaTypeId<QFileInfo>' has no member named 'qt_metatype_id'
make: *** [mainwindow.o] Ошибка 1



в userRole хранится QFileInfo, инициализированное таким образом

Код:

QStandardItem * myModel::addFile(QStandardItem * parent, const QFileInfo &file){
    QStandardItem * temp = new QStandardItem( file.completeBaseName() );
    int FileInfo_ = Qt::UserRole;
    temp->setData(&file, FileInfo_);
    parent->appendRow( temp );
    return parent;
}




что не так ?!


Название: [QT-4.2] Ругается компилятор на QVariant::value
Отправлено: bigirbis от Январь 08, 2007, 19:33
Q_DECLARE_METATYPE ( Type )?


Название: [QT-4.2] Ругается компилятор на QVariant::value
Отправлено: izoomer от Январь 09, 2007, 00:32
Цитата: "bigirbis"
Q_DECLARE_METATYPE ( Type )?

спасибище!!! работает !
только  странно как то .....
Код:

     QVariant data_ = song.model()->data(song, Qt::UserRole);
     QFileInfo FileInfo_;
     if ( data_.canConvert<QFileInfo>() )
        FileInfo_ = data_.value<QFileInfo>();
     pathLabel->setText(FileInfo_.absoluteFilePath());
   
вместо полного пути выдает всегда "true" ....
почему ?!