inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QString& text, PyObject* callback, const QKeySequence& shortcut) { QAction* act = new QAction(text, self); if (!icon.isNull()) act->setIcon(icon); if (!shortcut.isEmpty()) act->setShortcut(shortcut); self->addAction(act); PyObject* pyAct = Shiboken::Converter::toPython(act); Shiboken::AutoDecRef result(PyObject_CallMethod(pyAct, "connect", "OsO", pyAct, SIGNAL(triggered()), callback)); if (result.isNull()) { Py_DECREF(pyAct); return 0; } return pyAct; }