2016-10-24 15 views
0

使用QTDesigner我做了一個簡單的QListWidge一個包含三個項目PyQt的QListWidgetItem特定項目推出特定功能

蘋果

香蕉

橙色

我的目標,當其中一個選項是選擇它啓動一個特定的功能。出於某種原因,我不知道這一點,我無法找到我的谷歌搜索中的任何東西。我是pyQT的新手,所以也許我只是使用了不正確的術語。

使用Qt設計師,我可設置該信號和插槽,但效果是爲QListWidget內的每一個項目,它不是具體的。

這是我所關心的

QtCore.QObject.connect代碼(self.listWidget,QtCore.SIGNAL(_fromUtf8( 「itemClicked(QListWidgetItem *)」)),MainWindow.close)

選擇了任何QListWidgetItem時

即碼被關閉主窗口。我希望它只在選擇「apple」時關閉。我想讓香蕉和橙子做別的事情。

好像我找到所有在線的例子,如果你想一個項目做一些VS項B.他們都只是使用一個通用的樣品中,所有的項目做同樣的事情都沒有解決。

# -*- coding: utf-8 -*- 

    # Form implementation generated from reading ui file 'untitled.ui' 
    # 
    # Created by: PyQt4 UI code generator 4.11.4 
    # 
    # WARNING! All changes made in this file will be lost! 

    from PyQt4 import QtCore, QtGuii 

    try: 
     _fromUtf8 = QtCore.QString.fromUtf8 
    except AttributeError: 
     def _fromUtf8(s): 
      return s 

    try: 
     _encoding = QtGui.QApplication.UnicodeUTF8 
     def _translate(context, text, disambig): 
      return QtGui.QApplication.translate(context, text, disambig, _encoding) 
    except AttributeError: 
     def _translate(context, text, disambig): 
      return QtGui.QApplication.translate(context, text, disambig) 

    class Ui_MainWindow(object): 
     def setupUi(self, MainWindow): 
      MainWindow.setObjectName(_fromUtf8("MainWindow")) 
      MainWindow.resize(800, 600) 
      self.centralwidget = QtGui.QWidget(MainWindow) 
      self.centralwidget.setObjectName(_fromUtf8("centralwidget")) 
      self.listWidget = QtGui.QListWidget(self.centralwidget) 
      self.listWidget.setGeometry(QtCore.QRect(50, 60, 256, 241)) 
      self.listWidget.setObjectName(_fromUtf8("listWidget")) 
      item = QtGui.QListWidgetItem() 
      self.listWidget.addItem(item) 
      item = QtGui.QListWidgetItem() 
      self.listWidget.addItem(item) 
      item = QtGui.QListWidgetItem() 
      self.listWidget.addItem(item) 
      MainWindow.setCentralWidget(self.centralwidget) 
      self.menubar = QtGui.QMenuBar(MainWindow) 
      self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 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.listWidget, QtCore.SIGNAL(_fromUtf8("itemClicked(QListWidgetItem*)")), MainWindow.close) 
      QtCore.QMetaObject.connectSlotsByName(MainWindow) 

     def retranslateUi(self, MainWindow): 
      MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
      __sortingEnabled = self.listWidget.isSortingEnabled() 
      self.listWidget.setSortingEnabled(False) 
      item = self.listWidget.item(0) 
      item.setText(_translate("MainWindow", "apple", None)) 
      item = self.listWidget.item(1) 
      item.setText(_translate("MainWindow", "banana", None)) 
      item = self.listWidget.item(2) 
      item.setText(_translate("MainWindow", "orange", None)) 
      self.listWidget.setSortingEnabled(__sortingEnabled) 


    if __name__ == "__main__": 
     import sys 
     app = QtGui.QApplication(sys.argv) 
     MainWindow = QtGui.QMainWindow() 
     ui = Ui_MainWindow() 
     ui.setupUi(MainWindow) 
     MainWindow.show() 
     sys.exit(app.exec_()) 

回答

0

能夠使用下面的網站和一些示例腳本漂浮在一起的解決方案。他們關鍵的解決方案是.item

.item(0)正在檢查目前在索引0處設置的內容。下面的網站顯示我可以附加.isSelected(),當列表項是選擇。

有了這兩方面的信息時,選擇一個特定的項目我現在可以採取的具體行動。

http://doc.qt.io/qt-4.8/qlistwidgetitem.html#isSelected

QtCore.QObject.connect(self.listWidget, QtCore.SIGNAL(_fromUtf8("itemClicked(QListWidgetItem*)")), self.closewindow) 

def closewindow(self): 
    apple = self.listWidget.item(0).isSelected() 
    banana = self.listWidget.item(1).isSelected() 

    if apple == True: 
    self.exitprogram() 
    elif banana == True: 
    print 'Banana selected' 

def exitprogram(self): 
    sys.exit()