Sep-01-2019, 06:08 PM
forget the last post. It's so easy
setChangeCurrentOnDrag
setChangeCurrentOnDrag
import sys from PyQt5 import QtCore, QtGui, QtWidgets class Main(QtWidgets.QMainWindow): def __init__(self, parent): super().__init__() self.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents) self.tab1 = QtWidgets.QTreeWidget() self.tab2 = QtWidgets.QTreeWidget() self.tab3 = QtWidgets.QTreeWidget() self.tabIndex = 0 item = QtWidgets.QTreeWidgetItem() item.setText(0, "drag me") self.tab1.addTopLevelItem(item) self.tab1.setDragDropMode(QtWidgets.QAbstractItemView.DragOnly) self.TabBar = QtWidgets.QTabBar() self.ui = QtWidgets.QWidget(self) self.ui.tab = QtWidgets.QTabWidget(self) self.ui.tab.setTabBar(self.TabBar) self.ui.tab.addTab(self.tab1, "1st tab") self.ui.tab.addTab(self.tab2, "2nd tab") self.ui.tab.addTab(self.tab3, "3rd tab") self.tab2.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop) self.tab3.setDragDropMode(QtWidgets.QAbstractItemView.DragDrop) self.ui.layout = QtWidgets.QVBoxLayout() self.ui.layout.addWidget(self.ui.tab) self.ui.setLayout(self.ui.layout) self.setCentralWidget(self.ui) self.TabBar.setCurrentIndex(self.tabIndex) self.TabBar.setChangeCurrentOnDrag(True) self.TabBar.setAcceptDrops(True) self.setAcceptDrops(True) self.show() if __name__== '__main__': app = QtWidgets.QApplication(sys.argv) gui = Main(app) sys.exit(app.exec_())