Russian Qt Forum

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



Название: [qt-4.2] Q_DECLARE_METATYPE( QFileInfo ) где прописывать ?
Отправлено: izoomer от Январь 14, 2007, 14:31
Где нужно прописывать данную диррективу ?
есть три файла заголовочных для трех классов.
Если прописываю в каждом загловочном файле то пишет что
    previous definition of `struct QMetaTypeId<QFileInfo>'
если убираю в одном из файлов и оставляю толь ков одном файле, то пишет что:
 error: 'struct
   QMetaTypeId<QFileInfo>' has no member named 'qt_metatype_id'

то есть нет определения метатипа.
куда нужно вставлять то эту директиву что бы все виделось ?!


Название: [qt-4.2] Q_DECLARE_METATYPE( QFileInfo ) где прописывать ?
Отправлено: Dendy от Январь 14, 2007, 14:45
Асистант.

Ideally, this macro should be placed below the declaration of the class or struct. If that is not possible, it can be put in a private header file which has to be included every time that type is used in a QVariant.


Название: [qt-4.2] Q_DECLARE_METATYPE( QFileInfo ) где прописывать ?
Отправлено: izoomer от Январь 14, 2007, 14:50
ну так и вставляю каждй раз в конце каждого заголовочного файла, где использую QVariant с QFileInfo - и ругается что уже определено, а как только уберу то пишет что нет определения


Название: [qt-4.2] Q_DECLARE_METATYPE( QFileInfo ) где прописывать ?
Отправлено: Dendy от Январь 14, 2007, 15:10
С++ матчасть хромает. Естественно препроцессор увидит повторньІй макрос при компиляции ОДНОГО cpp файла. Именно поетому существуют:

Код:
#ifndef A_H
#define A_H
..
#endif

Код:
#pragma once


Нужно так:

Код:
// fileinfo_p.h
#pragma once

#include <QFileInfo>
Q_DECLARE_METATYPE( QFileInfo )


И в каждом cpp, что юзает кастинг QVariant в сей или из сего типа включать fileinfo_p.h.