class ScheduleView(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent=parent) self._presenter = SchedulePresenter(self) self._widget = QQuickWidget(self) self.setLayout(QHBoxLayout()) self.layout().setContentsMargins(1, 1, 1, 1) self.layout().addWidget(self._widget) self._widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self._widget.setResizeMode(QQuickWidget.SizeRootObjectToView) self._widget.rootContext().setContextProperty('scheduleView', self) self._widget.rootContext().setContextProperty('groupsModel', self) self._widget.setSource( QUrl('modules/schedule/scheduleForm/ScheduleForm.qml')) self.reqReprSchedules.connect(self.setModel) self.reqInitSchedule.connect(self.initSchedule) @pyqtSlot(int, name='changeWidth') def _changeWidth(self, _width): self.setFixedWidth(_width) _reqGroups = pyqtSignal(name='requireGroups') _reqSchedules = pyqtSignal(str, name='requireSchedules', arguments=['group']) _reqReprSchedules = pyqtSignal(QQuickItem, str, list, name='reqReprSchedules') _reqInitSchedule = pyqtSignal(QQuickItem, name='reqInitSchedule') @pyqtSlot(name='getGroups') def _getGroups(self): self.requireGroups.emit() def reprGroupsList(self, groups): self.setPropertyList('groupsModel', groups) def setPropertyList(self, objectName, values): self._widget.rootContext().setContextProperty(objectName, values) @pyqtSlot(str, name='getSchedules') def _getSchedules(self, group): self.requireSchedules.emit(group) def reprSchedules(self, schedules): self.reqReprSchedules.emit(self._widget.rootObject(), 'setScheduleModel', schedules) @pyqtSlot(QQuickItem, str, list, name='setModel') def _setModel(self, obj, callF, values): QMetaObject.invokeMethod(obj, callF, Q_ARG(QVariant, values)) @pyqtSlot(QQuickItem, name='initSchedule') def _initSchedule(self, obj): QMetaObject.invokeMethod(obj, "initSchedule")
def initTabWidget(self, tabWidget: ColorTabWidget, handle: ProjectReader): tabManager = TabManager(tabWidget, handle) # init qml main page list projectMainPage = QQuickWidget(tabWidget) projectMainPage.setResizeMode(QQuickWidget.SizeRootObjectToView) projectMainPage.setSource( QUrl.fromLocalFile('QML/ProjectMainPage.qml')) projectMainPage.setMinimumWidth(550) projectMainPage.setMinimumHeight(250) projectMainPage.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) obj_projectMainPage = projectMainPage.rootObject() # send main page init dict obj_projectMainPage.onInitMainPageItems( self.getProjectDetail(tabManager)) obj_projectMainPage.sendData.connect(self.getData_ProjectMainPage) tabManager.qmlHandle = obj_projectMainPage tabManager.qmlWidget = projectMainPage tabWidget.addTab(projectMainPage, 'MainPage:MainPage') return tabManager