Hi all,

I would like to have the following feature when using 
QTreeWidget via signal and slot mechanism. As an item(item_0) is 
entered, then a slot will be connected(that simply sets a value on 
(item_1)). To achieve that, I did the following:
self.treeWidget.itemEntered(item_0, 0).connect(self.trigger_result) 
and the UI complete code is as below:
class Ui_MainWindow(object):
def setupUi(self, MainWindow): 
MainWindow.setObjectName(_fromUtf8("MainWindow")) MainWindow.resize(480, 471) 
self.centralWidget = QtGui.QWidget(MainWindow) 
self.centralWidget.setObjectName(_fromUtf8("centralWidget")) self.treeWidget = 
QtGui.QTreeWidget(self.centralWidget) 
self.treeWidget.setGeometry(QtCore.QRect(20, 20, 431, 321)) 
self.treeWidget.setObjectName(_fromUtf8("treeWidget")) item_0 = 
QtGui.QTreeWidgetItem(self.treeWidget)  item_1 = QtGui.QTreeWidgetItem(item_0) 
item_1.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsDragEnabled|QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
 item_1 = QtGui.QTreeWidgetItem(item_0) #redundant 
item_1.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsDragEnabled|QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
 #redundant item_0 = QtGui.QTreeWidgetItem(self.treeWidget) #redundant item_0 = 
QtGui.QTreeWidgetItem(self.treeWidget) #redundant
 MainWindow.setCentralWidget(self.centralWidget) self.menuBar = 
QtGui.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 480, 
23)) self.menuBar.setObjectName(_fromUtf8("menuBar")) 
MainWindow.setMenuBar(self.menuBar) self.mainToolBar = 
QtGui.QToolBar(MainWindow) 
self.mainToolBar.setObjectName(_fromUtf8("mainToolBar")) 
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar) 
self.statusBar = QtGui.QStatusBar(MainWindow) 
self.statusBar.setObjectName(_fromUtf8("statusBar")) 
MainWindow.setStatusBar(self.statusBar) self.retranslateUi(MainWindow) 
self.treeWidget.itemEntered(item_0, 0).connect(self.trigger_result) 
QtCore.QMetaObject.connectSlotsByName(MainWindow) def trigger_result(self): 
self.treeWidget.topLevelItem(0).child(1).setText(1, '99')         def 
retranslateUi(self, MainWindow): 
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", 
"MainWindow", None, QtGui.QApplication.UnicodeUTF8))
 self.treeWidget.headerItem().setText(0, 
QtGui.QApplication.translate("MainWindow", "Property", None, 
QtGui.QApplication.UnicodeUTF8)) self.treeWidget.headerItem().setText(1, 
QtGui.QApplication.translate("MainWindow", "Value", None, 
QtGui.QApplication.UnicodeUTF8)) __sortingEnabled = 
self.treeWidget.isSortingEnabled() self.treeWidget.setSortingEnabled(False) 
self.treeWidget.topLevelItem(0).setText(0, 
QtGui.QApplication.translate("MainWindow", "Main", None, 
QtGui.QApplication.UnicodeUTF8)) 
self.treeWidget.topLevelItem(0).child(0).setText(0, 
QtGui.QApplication.translate("MainWindow", "Mass flow", None, 
QtGui.QApplication.UnicodeUTF8)) 
self.treeWidget.topLevelItem(0).child(1).setText(0, 
QtGui.QApplication.translate("MainWindow", "Efficiency", None, 
QtGui.QApplication.UnicodeUTF8)) self.treeWidget.topLevelItem(1).setText(0, 
QtGui.QApplication.translate("MainWindow", "Inlet/Inner part", None, 
QtGui.QApplication.UnicodeUTF8))
 self.treeWidget.topLevelItem(2).setText(0, 
QtGui.QApplication.translate("MainWindow", "Outlet/Outer part", None, 
QtGui.QApplication.UnicodeUTF8)) 
self.treeWidget.setSortingEnabled(__sortingEnabled) 
However, I receive the following error:
line 283, in setupUi
self.treeWidget.itemEntered(item_0, 0).connect(self.trigger_result) 
I understand that if I do:
self.treeWidget.itemEntered.connect(self.trigger_result) 
it will work, but the problem is, any cell or item entered, it will definitely 
call the slot, which is not what I want.
Also, I've tried:
self.treeWidget.itemEntered(self.treeWidget.topLevelItem(0).child(0), 
1).connect(self.trigger_result) 
it doesn't work either.

Attached is the code in Python. Please shed some light on this. 


Thanks in advance.
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created: Thu Jan 30 14:14:43 2014
#      by: PyQt4 UI code generator 4.9.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(480, 471)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
        self.treeWidget = QtGui.QTreeWidget(self.centralWidget)
        self.treeWidget.setGeometry(QtCore.QRect(20, 20, 431, 321))
        self.treeWidget.setUniformRowHeights(False)
        self.treeWidget.setAnimated(False)
        self.treeWidget.setWordWrap(False)
        self.treeWidget.setHeaderHidden(False)
        self.treeWidget.setObjectName(_fromUtf8("treeWidget"))
        item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
        item_1 = QtGui.QTreeWidgetItem(item_0)
        item_1.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsDragEnabled|QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
        item_1 = QtGui.QTreeWidgetItem(item_0)
        item_1.setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsDragEnabled|QtCore.Qt.ItemIsUserCheckable|QtCore.Qt.ItemIsEnabled)
        item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
        item_0 = QtGui.QTreeWidgetItem(self.treeWidget)
        self.treeWidget.header().setCascadingSectionResizes(False)
        self.treeWidget.header().setHighlightSections(False)
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 480, 23))
        self.menuBar.setObjectName(_fromUtf8("menuBar"))
        MainWindow.setMenuBar(self.menuBar)
        self.mainToolBar = QtGui.QToolBar(MainWindow)
        self.mainToolBar.setObjectName(_fromUtf8("mainToolBar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
        self.statusBar = QtGui.QStatusBar(MainWindow)
        self.statusBar.setObjectName(_fromUtf8("statusBar"))
        MainWindow.setStatusBar(self.statusBar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.headerItem().setText(0, QtGui.QApplication.translate("MainWindow", "Property", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.headerItem().setText(1, QtGui.QApplication.translate("MainWindow", "Value", None, QtGui.QApplication.UnicodeUTF8))
        __sortingEnabled = self.treeWidget.isSortingEnabled()
        self.treeWidget.setSortingEnabled(False)
        self.treeWidget.topLevelItem(0).setText(0, QtGui.QApplication.translate("MainWindow", "Main", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.topLevelItem(0).child(0).setText(0, QtGui.QApplication.translate("MainWindow", "Mass flow", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.topLevelItem(0).child(0).setText(1, QtGui.QApplication.translate("MainWindow", "199", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.topLevelItem(0).child(1).setText(0, QtGui.QApplication.translate("MainWindow", "Efficiency", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.topLevelItem(1).setText(0, QtGui.QApplication.translate("MainWindow", "Inlet/Inner part", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.topLevelItem(2).setText(0, QtGui.QApplication.translate("MainWindow", "Outlet/Outer part", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.setSortingEnabled(__sortingEnabled)

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to