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 :

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"
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
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)
Le souci vient quand je l'ouvre dans Designer. Je ne peux pas lui associer un Layout avec la fonction "Mettre en page".

Merci