如何用qtableview中右键单击的单元格中的显示文本填充上下文菜单操作“search:”。理想情况下,我希望菜单项显示单元格的文本。在本例中,它会说“search:45”,如果用户单击操作,它会设置qlineedit的文本。
导入系统
从Pyside导入qtcore,qtgui
类示例(qtgui.qwidget):
定义初始化(self,*args,**kwargs):
super(例如,self)。初始化(*args,**kwargs)
#控制
型号=qtgui.qstandarditemmodel(5,3)
model.setHorizontalHeaderLabels(['name'、'age'、'career'])
人=[
'姓名':'凯文','年龄':5,'职业':'运动员',
'name':'maggie','age':13,'career':'banker',
'name':'leslie','age':32,'career':'banker',
'姓名':'艾米丽','年龄':45,'职业':'运动员',
'name':'david','age':27,'career':'banker',
'name':'marie','age':63,'career':'secretary'
]
对于行,枚举中的obj(人):
model.setItem(行,0,项)
item=qtgui.qstandarditem(str(obj[‘age’))
model.setitem(行,1,项)
item=qtgui.qstandarditem(obj[职业])
model.setitem(行,2,项)
proxy_model=qtgui.qsortfilterproxymodel()。
proxy_model.setSourceModel(模型)
#控制
self.ui_table=qtgui.qtableview()。
self.ui_table.setEditTriggers(qtgui.qabstratemView.noEditTriggers)
self.ui_table.setSelectionBehavior(qtgui.qabstratemView.selectRows)
self.ui_table.setselection模式(qtgui.qabstratemview.singleselection)
self.ui_table.setmodel(代理\u模型)
self.ui_table.setContextMenuPolicy(qtcore.qt.customContextMenu)
self.ui_search=qtgui.qlineedit()。
#行动
self.act_search_keyword=qtgui.qaction('search',self)
菜单菜单
self.context_menu=qtgui.qmenu('file')
self.context_menu.addaction(self.act_search_关键字)
#敷设总管
lay_main=qtgui.qvboxlayout()。
lay_main.addwidget(self.ui_搜索)
lay_main.addwidget(self.ui_表格)
自设置布局(主布局)
#连接
self.ui_table.customContextMenuRequested.connect(self.open_context_菜单)
def打开上下文菜单(self,point):
self.context_menu.exec_uu(qtgui.qcursor.pos())
如果“名称”=
app=qtgui.qapplication(系统argv)
ex=示例()
例如,show())
系统退出(app.exec_u())
import sys
from PySide import QtCore, QtGui
class Example(QtGui.QWidget):
def __init__(self, *args, **kwargs):
super(Example, self).__init__(*args, **kwargs)
# controls
model = QtGui.QStandardItemModel(5, 3)
model.setHorizontalHeaderLabels(['NAME', 'AGE', 'CAREER'])
people = [
{'name': 'Kevin', 'age': 5, 'career': 'athlete'},
{'name': 'Maggie', 'age': 13, 'career': 'banker'},
{'name': 'Leslie', 'age': 32, 'career': 'banker'},
{'name': 'Emily', 'age': 45, 'career': 'athlete'},
{'name': 'David', 'age': 27, 'career': 'banker'},
{'name': 'Marie', 'age': 63, 'career': 'secretary'}
]
for row, obj in enumerate(people):
item = QtGui.QStandardItem(obj['name'])
model.setItem(row, 0, item)
item = QtGui.QStandardItem(str(obj['age']))
model.setItem(row, 1, item)
item = QtGui.QStandardItem(obj['career'])
model.setItem(row, 2, item)
proxy_model = QtGui.QSortFilterProxyModel()
proxy_model.setSourceModel(model)
# controls
self.ui_table = QtGui.QTableView()
self.ui_table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.ui_table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.ui_table.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
self.ui_table.setModel(proxy_model)
self.ui_table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
self.ui_search = QtGui.QLineEdit()
# actions
self.act_search_keyword = QtGui.QAction('Search:', self)
# menu
self.context_menu = QtGui.QMenu('File')
self.context_menu.addAction(self.act_search_keyword)
# lay main
lay_main = QtGui.QVBoxLayout()
lay_main.addWidget(self.ui_search)
lay_main.addWidget(self.ui_table)
self.setLayout(lay_main)
# connections
self.ui_table.customContextMenuRequested.connect(self.open_context_menu)
def open_context_menu(self, point):
self.context_menu.exec_(QtGui.QCursor.pos())
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())