Здравствуйте, я хотел бы интегрировать пользовательский QWidget, который я написал на C ++ и скомпилировал как dll с c интерфейсом, в python qt gui. Заголовок пользовательского виджета выглядит следующим образом:
typedef struct VideoStreamer VideoStreamer;
VideoStreamer* VideoStreamer_create();
void* VideoStreamer_getWidget(VideoStreamer* vs);
void VideoStreamer_delete(VideoStreamer* vs);
С getWidget как void * в QWidget передается В python библиотека загружается следующим образом
import ctypes
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
#VideoStreamer Lib
windll = ctypes.windll.LoadLibrary("C:/Users/Nenad/Desktop/python3_dll/VideoStreamer.dll")
create = windll.VideoStreamer_create
create.restype = ctypes.c_void_p
getWidget = windll.VideoStreamer_getWidget
getWidget.argtypes = [ctypes.c_void_p]
getWidget.restype = ctypes.c_void_p
delete = windll.VideoStreamer_delete
delete.argtypes = [ctypes.c_void_p]
Приложение инициализируется так:
#Application
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
vid = create()
vid_widget = getWidget(vid )
# how to make vid_widget to a QWidget (pointer/object) ? this does not work
container = ctypes.cast( vid_widget, ctypes.pointer(QWidget))
layout.addWidget( container )
window.setLayout( layout )
window.show()
app.exec_()
Проблема в том, что эта часть не работает, и я не имею ни малейшего представления, кому действовать дальше. Я не очень опытен в python и надеялся, что какое-то приведение типа (magi c), как в c ++ / c, будет достаточным для создания QWidget из пустоты *, которая является ссылкой на QWidget.
vid_widget = getWidget(vid )
# how to make vid_widget to a QWidget (pointer/object) ? this does not work
container = ctypes.cast( vid_widget, ctypes.pointer(QWidget))
layout.addWidget( container )
Я не могу добавить его в макет, есть кто-нибудь для меня руководство? С наилучшими пожеланиями Nnead