Register QObject classes as QML elements via macros
Using manual registration with qmlRegisterType (or qmlRegisterUncreatableType) isn't ideal, because Qt Creator can't pick up on it. When using the macros, autocompletion & unknown type warnings in the code disappear.
This commit is contained in:
parent
629676428f
commit
883d766dc3
|
@ -2,11 +2,14 @@
|
|||
#define COLUMNSLOT_H
|
||||
|
||||
#include <QObject>
|
||||
#include <qqmlintegration.h>
|
||||
#include "playingcard.h"
|
||||
|
||||
class ColumnSlot : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
QML_ELEMENT
|
||||
QML_UNCREATABLE("Use C++ logic to instantiate")
|
||||
Q_PROPERTY(PlayingCard* card READ card CONSTANT)
|
||||
Q_PROPERTY(bool revealed READ isRevealed NOTIFY revealedChanged)
|
||||
|
||||
|
|
|
@ -2,12 +2,15 @@
|
|||
#define GAMESTATE_H
|
||||
|
||||
#include <QObject>
|
||||
#include <qqmlintegration.h>
|
||||
#include "playingcard.h"
|
||||
#include "columnslot.h"
|
||||
|
||||
class GameState : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
QML_ELEMENT
|
||||
QML_UNCREATABLE("Use C++ logic to instantiate")
|
||||
Q_PROPERTY(QList<PlayingCard*> drawPile READ drawPile NOTIFY drawPileChanged)
|
||||
Q_PROPERTY(QList<PlayingCard*> throwawayPile READ throwawayPile NOTIFY throwawayPileChanged)
|
||||
Q_PROPERTY(QList<QList<ColumnSlot*>> columns READ columns NOTIFY columnsChanged)
|
||||
|
|
3
main.cpp
3
main.cpp
|
@ -15,9 +15,6 @@ int main(int argc, char *argv[])
|
|||
[]() { QCoreApplication::exit(-1); },
|
||||
Qt::QueuedConnection);
|
||||
|
||||
qmlRegisterUncreatableType<PlayingCard>("Solitare", 1, 0, "PlayingCard", "PlayingCard cannot be directly created in QML. Use C++ logic to instantiate.");
|
||||
qmlRegisterUncreatableType<ColumnSlot>("Solitare", 1, 0, "ColumnSlot", "ColumnSlot cannot be directly created in QML. Use C++ logic to instantiate.");
|
||||
|
||||
GameState gameState;
|
||||
gameState.dealCards();
|
||||
gameState.drawNextCard();
|
||||
|
|
|
@ -2,10 +2,13 @@
|
|||
#define PLAYINGCARD_H
|
||||
|
||||
#include <QObject>
|
||||
#include <qqmlintegration.h>
|
||||
|
||||
class PlayingCard : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
QML_ELEMENT
|
||||
QML_UNCREATABLE("Use C++ logic to instantiate")
|
||||
|
||||
Q_ENUMS(Value)
|
||||
Q_ENUMS(Suit)
|
||||
|
|
Loading…
Reference in a new issue