Skip to content

Using enum elements from C++ Qt Object in python #71

Open
@kwisp

Description

@kwisp

Short

In Python not found enum elements from C++ class derived from QObject added to PythonQt via addDecorators() and registerClass(QMetaObject*).

Versions

Qt 5.12.8
Python 3.8.10
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
PythonQt master fb16d6e on 3 Nov 2021

Example Code

Add to std example PyDecoratorsExample
ExternalWidget.h

#ifndef EXTERNAL_W_HH_
#define EXTERNAL_W_HH_

#include <QtWidgets/QWidget>

class ExternalWidget : public QWidget
{
  Q_OBJECT

public:
  enum EType
  {
    Aone,
    Atwo,
    Athree,
    Afour
  };

  Q_ENUM(EType)

  ExternalWidget(QWidget* parent = nullptr);
  ~ExternalWidget();

public slots:
  void widgetSlot(){};
};

#endif  // EXTERNAL_W_HH_

ExternalWidget.cpp

#include "ExternalWidget.h"

ExternalWidget::ExternalWidget(QWidget* parent) : QWidget(parent)
{
}

ExternalWidget::~ExternalWidget()
{
}

add to main.cpp

PythonQt::self()->registerClass(&ExternalWidget::staticMetaObject, "QtGui");

add to example.py

w = QtGui.ExternalWidget()
w.move(100,100)
w.show()

add ExternalWidget.h and ExternalWidget.cpp to HEADERS a SOURCES in PyDecoratorsExample.pro
In python console can use
dir(QtGui.ExternalWidget)

There are no enum elements Aone, Atwo e.t.c. and enum EType

Whats wrong???
I try to use Q_ENUMS() and result is the same. :(

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions