老实说,我不明白你想用它做什么QLineEdit
。但据我所知,你已经成功了一半。使用sectionDoubleClicked
的信号horizontalHeader()
是一个好的开始。但剩下的对我来说就是一个很大的问号。
您需要做的就是:获取标题项horizontalHeaderItem(index)
并使用text
获取值或setText
设置新值。
你可能会考虑QInputDialog.getText http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qinputdialog.html#getText从用户那里获取新的价值。
这是一个最小的例子来说明这一点:
import sys
from PyQt4 import QtGui
class MyWindow(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.table = QtGui.QTableWidget(5,5)
self.table.setHorizontalHeaderLabels(['1', '2', '3', '4', '5'])
self.table.setVerticalHeaderLabels(['1', '2', '3', '4', '5'])
self.table.horizontalHeader().sectionDoubleClicked.connect(self.changeHorizontalHeader)
layout = QtGui.QHBoxLayout()
layout.addWidget(self.table)
self.setLayout(layout)
def changeHorizontalHeader(self, index):
oldHeader = self.table.horizontalHeaderItem(index).text()
newHeader, ok = QtGui.QInputDialog.getText(self,
'Change header label for column %d' % index,
'Header:',
QtGui.QLineEdit.Normal,
oldHeader)
if ok:
self.table.horizontalHeaderItem(index).setText(newHeader)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = MyWindow()
main.show()
sys.exit(app.exec_())