Qt.ItemIsEnabled
플래그를 설정하면 QTableView
항목을 편집 할 수 있습니다. 항목의 편집 모드를 시작하려면 사용자가 해당 항목을 두 번 클릭하기 만하면됩니다. 항목을 편집하는 또 다른 방법은 항목을 선택하고 키보드 키를 누르는 것입니다. 두 번째 방법으로 항목의 편집 모드를 비활성화하는 방법은 무엇입니까? 여기 QTableView를 두 번 클릭 할 때만 편집 모드로 전환하는 방법
즉시 사용자가 선택한 항목이 편집 모드에 이미 키보드 키를 누를 같이
이 기본 QTableView 동작으로 인해 함수 바로 가기를 정의 할 수 없습니다. 링크 된 바로 가기 함수를 트리거하는 대신 QListView의 항목이 전자 diting 모드 .... 더블 클릭시에만 QTableView가 편집 모드로 들어가게하는 방법은 무엇입니까?
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
class Model(QAbstractTableModel):
def __init__(self, parent=None, *args):
QAbstractTableModel.__init__(self, parent, *args)
self.items = ['Item_A_001','Item_A_002','Item_B_001','Item_B_002']
def rowCount(self, parent=QModelIndex()):
return len(self.items)
def columnCount(self, parent=QModelIndex()):
return 1
def data(self, index, role):
if not index.isValid(): return QVariant()
elif role != Qt.DisplayRole:
return QVariant()
row=index.row()
if row<len(self.items):
return QVariant(self.items[row])
else:
return QVariant()
def flags(self, index):
return Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
tableModel=Model(self)
self.view=QTableView(self)
self.view.setModel(tableModel)
self.view.horizontalHeader().setResizeMode(QHeaderView.Stretch)
layout = QVBoxLayout(self)
layout.addWidget(self.view)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
감사합니다. 간단한 솔루션을 위해 DrHaze! – alphanumeric