def button(self):
index = self.treeView1.currentIndex()
node = index.internalPointer()
if node is not None:
print("You select item in treeView1 " + node.name())
else:
index = self.treeView2.currentIndex()
node = index.internalPointer()
print("You select item in treeView2 " + node.name())
它有效,但我认为这是非常糟糕的解决方案.. 我怎么做这个例子呢? 非常感谢! 对不起我的英文:)
答案 0 :(得分:1)
这很容易。
首先设置两个信号
QtCore.QObject.connect(self.treeView1 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree1)
QtCore.QObject.connect(self.treeView2 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree2)
设置完信号后,您需要定义广告位def clickedTree1(self,index)
和def clickedTree2 (self,index)
。
def clickedTree1(self,index):
node = index.internalPointer()
print("You select item in treeView1 " + node.name())
def clickedTree2(self,index):
node = index.internalPointer()
print("You select item in treeView2 " + node.name())
更新
好的,我再次阅读了这个问题,并且我想要在点击按钮时打印。
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(616, 276)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget)
self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
self.horizontalLayout = QtGui.QHBoxLayout()
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.treeView = QtGui.QTreeView(self.centralwidget)
self.treeView.setObjectName(_fromUtf8("treeView"))
self.horizontalLayout.addWidget(self.treeView)
self.treeView_2 = QtGui.QTreeView(self.centralwidget)
self.treeView_2.setObjectName(_fromUtf8("treeView_2"))
self.horizontalLayout.addWidget(self.treeView_2)
self.verticalLayout.addLayout(self.horizontalLayout)
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.verticalLayout.addWidget(self.pushButton)
self.verticalLayout_2.addLayout(self.verticalLayout)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 616, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QObject.connect(self.treeView1 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree1)
QtCore.QObject.connect(self.treeView2 , QtCore.SIGNAL("clicked (const QModelIndex&)") , self.clickedTree2)
QtCore.QObject.connect(self.pushButton , QtCore.SIGNAL("clicked()"),self.pushed)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "PushButton", None, QtGui.QApplication.UnicodeUTF8))
def clickedTree1(self,index):
self.node = index.internalPointer()
self.Tree = 1
def clickedTree2(self,index):
self.node = index.internalPointer()
self.Tree = 2
def pushed(self):
print("You select item in treeView{0} ".format(self.Tree) + node.name())