Bonjour,
Je reviens vous voir pour la création d'un widget personnalisé.
J'aimerai créer une grouBox avec une propriété selected en plus.
J'ai pensé, naïvement peu être, qu'un simple True dans la méthode isContainer du plugin suffirait. Apparament non !
Mon plugin :
Mon widget :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 class ParamsGroupPlugin(QtDesigner.QPyDesignerCustomWidgetPlugin): def __init__(self, parent=None): super(ParamsGroupPlugin, self).__init__(parent) self.initialized = False def initialize(self, core): if self.initialized: return self.initialized = True def isInitialized(self): return self.initialized def createWidget(self, parent): return ParamsGroup(parent) def name(self): return "ParamsGroup" def group(self): return "Les widgets Diam" def isContainer(self): return True def domXml(self): return ('<widget class="ParamsGroup" name="ParamsGroup">' ' <widget class="QWidget" name="page" />' '</widget>') def includeFile(self): return "paramsGroup"
Le souci vient quand je l'ouvre dans Designer. Je ne peux pas lui associer un Layout avec la fonction "Mettre en page".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 class ParamsGroup(QtGui.QWidget): selectChanged = QtCore.pyqtSignal(bool) def __init__(self, parent=None): super(ParamsGroup, self).__init__(parent) self.styleSheet = " QGroupBox { ... }" self.setStyleSheet(self.styleSheet) self.group = QtGui.QGroupBox(self) self._title = "sous-groupe" self.group.setTitle(self._title) self.widget = QtGui.QWidget() self._selected = False self.group.setProperty("selected", self._selected) self.widget.setParent(self.group) self.outLayout = QtGui.QGridLayout() self.outLayout.addWidget(self.group, 0,0) self.setLayout(self.outLayout) def selected(self): return self._selected @QtCore.pyqtSlot(bool) def setSelected(self, s): if s != self._selected: self._selected = s self.group.setProperty("selected", s) self.setStyleSheet(self.styleSheet) self.emit(QtCore.SIGNAL("selectChanged(bool)"), s) selected = QtCore.pyqtProperty(bool, selected, setSelected) def title(self): return self._title @QtCore.pyqtSlot(str) def setTitle(self, title = "sous-groupe"): if title != self._title: self.group.setTitle(title) title = QtCore.pyqtProperty(str, title, setTitle)
Merci
Partager