2017-10-04 3 views
0

これは私がここで問題を書くことができるテーブルのUIを生成するのに役立つ私の呼び出し元ファイルです。ここで問題は私がそれに従ってテーブルのヘッダーをクリックするとデータをソートしたいのですカラム。私はバックエンドのデータを持っているのでデータを簡単にソートすることができます(ここでは必要ないのでこのコードにはありません)。しかし、テーブルのヘッダにクリック機能を適用することができません。私は別のテーブルのヘッダーにclicked.connectを適用したい。pyqtのテーブルヘッダーをクリックして適用します

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

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

from PyQt4 import QtCore, QtGui 

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.gridLayout = QtGui.QGridLayout(self.centralwidget) 
     self.gridLayout.setObjectName(_fromUtf8("gridLayout")) 
     self.tableWidget = QtGui.QTableWidget(self.centralwidget) 
     self.tableWidget.setObjectName(_fromUtf8("tableWidget")) 
     self.tableWidget.setColumnCount(3) 
     self.tableWidget.setRowCount(3) 
     item = QtGui.QTableWidgetItem() 
     self.tableWidget.setVerticalHeaderItem(0, item) 
     item = QtGui.QTableWidgetItem() 
     self.tableWidget.setVerticalHeaderItem(1, item) 
     item = QtGui.QTableWidgetItem() 
     self.tableWidget.setVerticalHeaderItem(2, item) 
     item = QtGui.QTableWidgetItem() 
     self.tableWidget.setHorizontalHeaderItem(0, item) 
     item = QtGui.QTableWidgetItem() 
     self.tableWidget.setHorizontalHeaderItem(1, item) 
     item = QtGui.QTableWidgetItem() 
     self.tableWidget.setHorizontalHeaderItem(2, item) 
     self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1) 
     MainWindow.setCentralWidget(self.centralwidget) 
     self.menubar = QtGui.QMenuBar(MainWindow) 
     self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 31)) 
     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.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
     MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None)) 
     item = self.tableWidget.verticalHeaderItem(0) 
     item.setText(_translate("MainWindow", "New Row", None)) 
     item = self.tableWidget.verticalHeaderItem(1) 
     item.setText(_translate("MainWindow", "New Row", None)) 
     item = self.tableWidget.verticalHeaderItem(2) 
     item.setText(_translate("MainWindow", "New Row", None)) 
     item = self.tableWidget.horizontalHeaderItem(0) 
     item.setText(_translate("MainWindow", "Name", None)) 
     item = self.tableWidget.horizontalHeaderItem(1) 
     item.setText(_translate("MainWindow", "class", None)) 
     item = self.tableWidget.horizontalHeaderItem(2) 
     item.setText(_translate("MainWindow", "marks", None)) 


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
self.connect(self.tableWidget.horizontalHeader(),SIGNAL("sectionClicked(int)"),self.fun) 

def fun(self,i): 
    print("index clicked is"+i) 
+3

あなたが解決策はOPの問題を解決する方法強調表示することができ:事前に感謝:)

from table import * from PyQt4 import QtGui # Import the PyQt4 module we'll need import sys # We need sys so that we can pass argv to QApplication import os from PyQt4.QtGui import * from PyQt4.QtCore import * class MainWindow(QMainWindow,Ui_MainWindow): def __init__(self, parent=None): QMainWindow.__init__(self, parent) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_()) 

これはUIコードを持っている私のtable.pyのですか?答えの現在の状態から、問題を解決するために何が行われたのかを判断することは非常に困難です。 – thomaux

+0

答えとして追加されたこの関数は、テーブル内でクリックしたヘッダのインデックスを返すのに役立ちます。 –

+0

pyqtのqtableviewヘッダー接続を参照する必要があります –

関連する問題