MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / fromQWidget

Method fromQWidget

src/Gui/PythonWrapper.cpp:838–873  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

836}
837
838Py::Object PythonWrapper::fromQWidget(QWidget* widget, const char* className)
839{
840 const char* typeName;
841 if (className) {
842 typeName = className;
843 }
844 else {
845 typeName = widget->metaObject()->className();
846 }
847#if defined(HAVE_SHIBOKEN) && defined(HAVE_PYSIDE)
848 // Access shiboken/PySide via C++
849 auto type = getPyTypeObjectForTypeName<QWidget>();
850 const char* wrapperName = typeName;
851 if (!type) {
852 // Some Shiboken builds do not resolve Qt widget classes via typeid().name().
853 // Caller-provided class names and getWrapperName() use PySide type names instead.
854 type = getPyTypeObjectForPySideTypeName(wrapperName);
855 }
856 if (!type) {
857 wrapperName = getWrapperName(widget);
858 type = getPyTypeObjectForPySideTypeName(wrapperName);
859 }
860 if (type) {
861 PyObject* pyobj = Shiboken::Object::newObject(type, widget, false, false, wrapperName);
862 WrapperManager::instance().addQObject(widget, pyobj);
863 return Py::asObject(pyobj);
864 }
865#else
866 // Access shiboken/PySide via Python
867 Py::Object obj = qt_wrapInstance<QWidget*>(widget, typeName, "QtWidgets");
868 if (!obj.isNull()) {
869 return obj;
870 }
871#endif
872 throw Py::RuntimeError("Failed to wrap widget");
873}
874
875const char* PythonWrapper::getWrapperName(QObject* obj) const
876{

Callers 11

setupContextMenuMethod · 0.80
getattrMethod · 0.80
graphicsViewMethod · 0.80
createWrapperMethod · 0.80
wrapFromWidgetFactoryFunction · 0.80
loadMethod · 0.80
getDialogContentMethod · 0.80
modifyStandardButtonsMethod · 0.80
createControlWidgetMethod · 0.80

Calls 5

addQObjectMethod · 0.80
instanceFunction · 0.70
classNameMethod · 0.45
isNullMethod · 0.45

Tested by

no test coverage detected