Qt实现单击或双击QTableWidge/View表头进行排序

Posted 林夕07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt实现单击或双击QTableWidge/View表头进行排序相关的知识,希望对你有一定的参考价值。

先看效果图 点击一次对应列进行降序,再点击一次进行升序,分别对应图1、图2。

实现代码

构造函数中设置了一个sign以及关联对应的信号。 双击表头的信号为sectionDoubleClickClicked

m_sign = true;//设置一个标志位
// 单击表头
connect(ui.tableWidget->horizontalHeader(), &QHeaderView::sectionClicked, this, &QtTableWidgetsSort::onCustomSort);

// 双击表头信号 sectionDoubleClickClicked

槽函数实现为

void QtTableWidgetsSort::onCustomSort(int logicalIndex)

	for (size_t i = 0; i < ui.tableWidget->rowCount() - 1; ++i)
	
		for (size_t j = 0; j < ui.tableWidget->rowCount() - i - 1; ++j)
		
			if(m_sign == (ui.tableWidget->item(j,logicalIndex)->text() > 
                ui.tableWidget->item(j + 1, logicalIndex)->text()))
			
                for (size_t k = 0; k < ui.tableWidget->columnCount(); ++k)
                
                    QTableWidgetItem item1 = *ui.tableWidget->item(j, k);
                    ui.tableWidget->item(j, k)->setText(ui.tableWidget->item(j + 1, k)->text());
                    ui.tableWidget->item(j + 1, k)->setText(item1.text());
                
			
		
	
    m_sign = !m_sign;

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于Qt实现单击或双击QTableWidge/View表头进行排序的主要内容,如果未能解决你的问题,请参考以下文章

Qt:QTabWidget 不响应点击

GridView 行单击或双击事件绑定

c# listbox单击与双击冲突

Qt:QPushButton 单击双击响应区分

object层级显示问题

QT编程Widget鼠标事件