Russian Qt Forum
Май 17, 2024, 10:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Привязка собственных классов к Python (PySide , Shiboken)  (Прочитано 3831 раз)
Thanatos
Гость
« : Декабрь 26, 2012, 13:43 »

Люди, у кого есть практический опыт привязки своих классов, которые унаследованы от классов Qt, к Python?

Задача:
осуществить привязку без переписывания кода (максимум можно дописывать) в Windows (потом будет пересобираться под линукс). Уже неделю бьюсь на этим.

Использую PySide и утилиту Shiboken с ним в комплекте. Делаю по двум примерам
http://lynxline.com/superhybrids-part-2-now-qt-pyside/
http://qt-project.org/wiki/PySide_Binding_Generation_Tutorial:_Module_5_Building_the_generator

По ним получилось:

global.h
Код
C++ (Qt)
#undef QT_NO_STL
#undef QT_NO_STL_WCHAR
 
#ifndef NULL
#define NULL    0
#endif
 
#include "c:/Python27/Lib/site-packages/PySide/pyside_global.h"
#include "d:/___work/graphic_creator/src/const.h"
#include "d:/___work/graphic_creator/src/dev_baseitem.h"
#include "d:/___work/graphic_creator/src/dev_scene.h"
#include "d:/___work/graphic_creator/src/dev_block.h"
#include "d:/___work/graphic_creator/src/dev_wire.h"
#include "d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtCore/QObject"
#include "d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtCore/QObjectData"
#include "d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtGui/QGraphicsItem"
 

typesystem.xml
Код
XML
<?xml version="1.0"?>
<typesystem package="DevPython">
   <load-typesystem name="typesystem_core.xml" generate="no"/>
   <load-typesystem name="typesystem_gui.xml" generate="no"/>
   <load-typesystem name="typesystem_xml.xml" generate="no"/>
   <object-type name="DevBaseItem" />
   <object-type name="DevBlock" />
   <object-type name="DevWire" />
   <object-type name="DevScene" />
</typesystem>
 

run.bat
Код
DOS
c:\Python27\Lib\site-packages\PySide\shiboken.exe global.h --include-paths="d:/___work/graphic_creator/src";"d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/Qt";"d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtCore";"d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtGui";"d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtXml";"d:/QtSDK/Desktop/Qt/4.8.1/mingw/include/QtXmlPatterns" --typesystem-paths="c:/Python27/Lib/site-packages/PySide/typesystems" --enable-pyside-extensions --output-directory=. typesystem.xml
 

Сами классы

dev_baseitem.h
Код
C++ (Qt)
#include <const.h>
#include <QObject>
 
class DevBaseItem : public QObject
{
//....
}
 

dev_block.h
Код
C++ (Qt)
#include "dev_baseitem.h"
#include <QGraphicsRectItem>
 
class DevBlock : public DevBaseItem , public QGraphicsRectItem
{
//....
}
 


dev_wire.h
Код
C++ (Qt)
#include <const.h>
#include "dev_baseitem.h"
#include <QGraphicsPathItem>
 
class DevWire :  public DevBaseItem , public QGraphicsPathItem
{
//....
}
 

dev_scene.h
Код
C++ (Qt)
#include <QGraphicsScene>
 
class DevBlock;
class DevWire;
class DevBaseItem;
 
class DevScene : public QGraphicsScene
{
//....
}
 

Результат выполнения run.bat
Код:
Generating class model...                    [WARNING]
enum 'QGraphicsItem::PanelModality' does not have a type entry or is not an enum


Generating namespace model...                [OK]
Resolving typedefs...                        [OK]
Fixing class inheritance...                  [OK]
Detecting inconsistencies in class model...  [OK]
[OK]

## куча проблем с enum

signature 'metaObject()const' for function modification in 'QObject' not found. Possible candidates:

Done, 886 warnings (31 known issues)

Кто-нибудь сталкивался с подобными проблемами?
Или может посоветуете альтернативный вариант решения поставленной задачи!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.222 секунд. Запросов: 19.