QT下 TableWidget 实现右键菜单栏,以及TableWidget整体美化工作。

本文介绍了在QT环境中,如何为TableWidget添加右键菜单功能,并提供了TableWidget的样式美化教程,包括设置header字体颜色、调整伸缩框样式以及实现整行选取效果。
摘要由CSDN通过智能技术生成

转载请注明出处: http://blog.csdn.net/elfprincexu


QT TableWidget 是一个很常用的widget, 可以实现类似excel表格的效果。现在讲解一下如何实现右键菜单项选择。先附图如下




代码当中, 
cpp 文件当中:
_tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect (_tableWidget, SIGNAL(customContextMenuRequested(QPoint)), SLOT(customMenuRequested(QPoint)))  	// right click connection

void MyClass::customMenuRequested(QPoint pos) 
{
	QTableWidgetItem* selecteditem = _tableWidget->itemAt(pos) ;	//get right click pos item
	/*
	* do sth  relative with current selected item
	*  QString finalStr = selecteditem->text();
	*/
	QMenu* menu = ne
在Linux系统上,实现QtTableWidget中表头右键创建筛选框的方法与在Windows系统上类似,主要有以下几个步骤: 1. 创建一个TableWidget,并在表头上添加一个右键菜单。可以使用QMenu和QHeaderView的setContextMenuPolicy()函数来实现。 ```python self.tableWidget = QTableWidget() self.tableWidget.setColumnCount(3) self.tableWidget.setHorizontalHeaderLabels(['Name', 'Age', 'Gender']) self.tableWidget.setRowCount(5) self.tableWidget.horizontalHeader().setContextMenuPolicy(Qt.CustomContextMenu) self.tableWidget.horizontalHeader().customContextMenuRequested.connect(self.showContextMenu) ``` 2. 实现右键菜单的showContextMenu()函数。在该函数中创建一个筛选框,并将其与对应的表头列进行关联。 ```python def showContextMenu(self, pos): column = self.tableWidget.horizontalHeader().logicalIndexAt(pos) menu = QMenu(self) filterAction = menu.addAction("Filter") action = menu.exec_(self.tableWidget.mapToGlobal(pos)) if action == filterAction: self.createFilter(column) def createFilter(self, column): filterBox = QComboBox(self.tableWidget) filterBox.addItems(['All', 'Male', 'Female']) filterBox.currentIndexChanged.connect(lambda: self.filterTable(column, filterBox.currentText())) self.tableWidget.setCellWidget(0, column, filterBox) def filterTable(self, column, text): for i in range(self.tableWidget.rowCount()): if text == 'All': self.tableWidget.setRowHidden(i, False) elif text != self.tableWidget.item(i, column).text(): self.tableWidget.setRowHidden(i, True) else: self.tableWidget.setRowHidden(i, False) ``` 在createFilter()函数中,创建一个QComboBox,并将其与表头中的对应列进行关联。然后,根据选择的筛选条件,在filterTable()函数中对表格进行筛选。 以上是一个简单的实现,具体实现可能需要根据具体需求进行调整。需要注意的是,在Linux系统上,可能需要考虑一些系统相关的问题,如文件路径分隔符等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值