开发者

QtCreator and signals and slots

开发者 https://www.devze.com 2023-02-23 01:13 出处:网络
In the QtCreator change signals/slots context menu, I can\'t insert neither signals nor slots that have parameterized arguments such as: QList<QString>, etc. or even references only re开发者_JAVA技

In the QtCreator change signals/slots context menu, I can't insert neither signals nor slots that have parameterized arguments such as: QList<QString>, etc. or even references only re开发者_JAVA技巧gular types (int, QSring, etc.)

Why?


When you connect a signal to a socket you use MetaType system of QObject:

connect(sender, SIGNAL(updated(QList<MyClass>), receiver, SLOT(list_updated(QList<MyClass>))

The parameter of the signal and slot is of "QList<MyClass>" metatype. Since it is custom metatype, Qt library has no knowledge of underlying implementation type.

Declare new types with Q_DECLARE_METATYPE() to make them available to QVariant and other template-based functions. Call qRegisterMetaType() to make type available to non-template based functions, such as the queued signal and slot connections.

So you need to add metatype declaration before you make connection:

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

精彩评论

暂无评论...
验证码 换一张
取 消