[Qt-interest] QObject::enumeratorCount() returns 0

Jesús Fernández jsfdez at gmail.com
Wed Dec 17 14:42:44 CET 2008


Hi,

I have this classes

HEADERS:

#include <QSettings>

class QString;

// NOTE: The first child enum must be named Key

class Settings : public QSettings {
	Q_OBJECT
	
public:
	Settings(QObject *parent=0);
	~Settings();
	
	virtual QString group() const=0;
	
	QString keyName(int key) const;
	void setValue(int key, const QVariant &value);
	QVariant value(int key, const QVariant &defaultValue=QVariant());
protected:
	enum {
		InvalidKey=-1,
		FirstKey=0
	};
	
	void init();
};

class DatabaseSettings:public Settings {
	Q_OBJECT

public:
	enum Key {
		ConnectionString=FirstKey
	};
	
	QString group() const;
	QVariant value(Key key);
};


-----------------------------


SOURCES:

QString Settings::keyName(int key) const
{
	const QMetaObject *meta=metaObject();
	
	qDebug()<<meta->enumeratorCount();                    // <---- This shows 0
	int enumerator=meta->indexOfEnumerator("Key");
	QMetaEnum metaEnum=meta->enumerator(enumerator);
	QString name(metaEnum.key(key));
	
	Q_ASSERT(!name.isEmpty());
	return name;
}


The problem is that in this portion of code the meta object always
returns 0 and I can't get the enumerator, anyone sees the problem?

Thanks



More information about the Qt-interest-old mailing list