Bonjour à tous,

Je voudrais pouvoir passer le text d'un item de QTreeWidget à une cellule d'un QTableWidget. L'idéal serait de trouver position de la cellule sous la souris un peu comme ci c'était en mode InternalMove. Je n'y arrive pas du tout. Pourriez vous m'aider s'il vous plait.

Romung

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import sys
from PyQt4 import QtCore, QtGui
 
class QCustomTableWidget (QtGui.QTableWidget):
 
    def __init__ (self, parent = None):
 
        super(QCustomTableWidget, self).__init__(parent)
 
        self.setColumnCount(2)
        self.setRowCount(2)
        self.setItem(0, 0, QtGui.QTableWidgetItem('cell'))
 
        self.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
 
    def dragEnterEvent (self, eventQDragEnterEvent):
 
        sourceQCustomTableWidget = eventQDragEnterEvent.source()
 
        if isinstance(sourceQCustomTableWidget, QtGui.QTreeWidget) and (self is not     sourceQCustomTableWidget):
            eventQDragEnterEvent.accept()
        else:
            QtGui.QTableWidget.dragEnterEvent(self, eventQDragEnterEvent)
 
    def dropEvent (self, eventQDropEvent):
 
        sourceQCustomTableWidget = eventQDropEvent.source()
 
        if isinstance(sourceQCustomTableWidget, QtGui.QTreeWidget) and (self is not sourceQCustomTableWidget):
            sourceQTableWidgetItem      = sourceQCustomTableWidget.currentIndex()
            destinationQTableWidgetItem = str(sourceQTableWidgetItem.data().toString())
 
           ##############################################################################
           ##############################################################################
           ##############################################################################
            self.setItem('???', '???', QtGui.QTableWidgetItem(destinationQTableWidgetItem))
           ##############################################################################
           ##############################################################################
           ##############################################################################
 
        else:
            QtGui.QTableWidget.dropEvent(self, eventQDropEvent)
 
class QCustomQWidget (QtGui.QWidget):
 
    def __init__ (self, parent = None):
 
        super(QCustomQWidget, self).__init__(parent)
 
        self.my1QCustomTableWidget  = QCustomTableWidget(self)
 
        self.myQTreeWidget   = QtGui.QTreeWidget(self)
        self.myQTreeWidget.setDragEnabled(True)
        listsExampleQTreeWidgetItem = [QtGui.QTreeWidgetItem([name]) for name in ['A', 'B', 'C']]
        self.myQTreeWidget.addTopLevelItems(listsExampleQTreeWidgetItem)
 
        self.allQHBoxLayout = QtGui.QHBoxLayout()
        self.allQHBoxLayout.addWidget(self.my1QCustomTableWidget)
        self.allQHBoxLayout.addWidget(self.myQTreeWidget)
        self.setLayout(self.allQHBoxLayout)
 
app = QtGui.QApplication(sys.argv)
myQCustomQWidget = QCustomQWidget()
myQCustomQWidget.show()
sys.exit(app.exec_())