QObject подключить QSystemDeviceInfo :: Profile к QVariant - PullRequest
1 голос
/ 29 января 2012

У меня есть часть QML моего приложения, которая должна знать, в каком состоянии я нахожусь. Функция currentProfileChanged имеет сигнал, дающий мне QSystemDeviceInfo::Profile, который я хочу преобразовать в QVaraint, чтобы QML может понимать профиль как число от 0 до 7, но эта функция:

QObject::connect(deviceInfo, 
    SIGNAL(currentProfileChanged(QSystemDeviceInfo::Profile)),
    rootObject,
    SLOT(changePower(QVariant(QSystemDeviceInfo::Profile))));

выдает эту странную ошибку:

[Qt Message] Object::connect: No such slot
     QDeclarativeItem_QML_3::changePower(QVariant(QSystemDeviceInfo::Profile))  
     in C:/Users/Gerhard/QTProjects/Raker/main.cpp:142

Что я здесь не так делаю?

Если я попробую это:

QObject::connect(deviceInfo, 
    SIGNAL(currentProfileChanged(QSystemDeviceInfo::Profile)),
    rootObject,
    SLOT(changePower(QVariant(QSystemDeviceInfo::Profile))));

Это говорит это:

[Qt Message] Object::connect: No such slot
     QDeclarativeItem_QML_3::changePower(QSystemDeviceInfo::Profile)  
     in C:/Users/Gerhard/QTProjects/Raker/main.cpp:142

Если я заменю любой или оба на просто QVariant, он также будет жаловаться на несовместимые аргументы.

Ответы [ 2 ]

0 голосов
/ 31 января 2012

Поскольку, как представляется, не было более простого способа, я должен был написать функцию для преобразования типов и добавить еще несколько сигнальных слотов, но, по крайней мере, теперь это работает, вот моя функция, если вы этого хотите:

#include <QObject>
#include <QVariant>
#include <QSystemDeviceInfo>
#include <QDebug>

using namespace QtMobility;


class changeVAriant : public QObject
{
    Q_OBJECT

public slots:
    void toVariant(QSystemDeviceInfo::Profile prof)
    {
        emit newVariant(QVariant(prof));
    }
signals:
    void newVariant(QVariant);
};
0 голосов
/ 29 января 2012

Функция слота не может иметь параметр, который не соответствует параметру в сигнале. Ваш слот должен быть указан как ..SLOT(changePower(QSystemDeviceInfo::Profile))..

...