QtCreator и сигналы и слоты - PullRequest
       0

QtCreator и сигналы и слоты

2 голосов
/ 09 апреля 2011

В контекстном меню изменения сигналов / слотов QtCreator я не могу вставить ни сигналы, ни слоты с параметризованными аргументами, такими как: QList и т. Д., Или даже ссылаться только на обычные типы (int , QSring и т. Д.)

Почему?

1 Ответ

5 голосов
/ 10 апреля 2011

Когда вы подключаете сигнал к сокету, вы используете систему MetaType QObject:

connect (отправитель, SIGNAL (обновлено (QList ), получатель, SLOT (list_updated (QList ))

Параметр сигнала и слота имеет метатип "QList ". Поскольку это пользовательский метатип, библиотека Qt не знает базового типа реализации.

Объявление новых типов с Q_DECLARE_METATYPE () чтобы сделать их доступны для QVariant и других шаблонные функции. Вызов qRegisterMetaType (), чтобы сделать тип доступно не на основе шаблона функции, такие как поставленный в очередь сигнал и слот соединения.

Таким образом, вам нужно добавить объявление метатипа перед установлением соединения:

qRegisterMetaType<MyClass>("MyClass");
qRegisterMetaType<QList<MyClass> >("QList<MyClass>");
...