Qt Table Widget常用操作
Posted duxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt Table Widget常用操作相关的知识,希望对你有一定的参考价值。
一、鼠标悬浮在item上 显示提示信息
1、在构造函数开启table Widget控件的鼠标捕获功能
// 开启鼠标捕获功能(实现table widget的悬浮功能) ui.tableWidget->setMouseTracking(true);
2、连接信号和槽
connect(ui.tableWidget, SIGNAL( cellEntered(int, int)), this, SLOT(slotCellEntered(int, int)));
3、编写槽函数
void test10292::slotCellEntered(int r, int c) { QTableWidgetItem* item = ui.tableWidget->item(r, c); if (item == nullptr) { return; } QToolTip::showText(QCursor::pos(), item->text()); }
二:点击表头实现排序
// 连接信号和槽 connect(ui.tableWidget->horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sortHeader(int))); // 实现槽函数 void test10292::sortHeader(int index) { if (index == 2) { ui.tableWidget->sortItems(index, Qt::DescendingOrder); return; } ui.tableWidget->sortItems(index, Qt::AscendingOrder); }
三:拖拽item 实现两个item内容的互换
需要写一个类MyQTableWidget继承自QTableWidget,然后重写mousePressEvent和dropEvent事件处理函数
MyQTableWidget.h 文件
#ifndef MYQTABLEWIDGET_H #define MYQTABLEWIDGET_H #include <QTableWidget> #include <QMouseEvent> #include <QDebug> class MyQTableWidget : public QTableWidget { Q_OBJECT public: MyQTableWidget(QWidget *parent); ~MyQTableWidget(); private: QString temp; QPoint m_spos, m_dpos; QTableWidgetItem* sitem; QTableWidgetItem* ditem; void mousePressEvent(QMouseEvent *event); void dropEvent(QDropEvent *event); }; #endif // MYQTABLEWIDGET_H
MyQTableWidget.cpp 文件
#include "MyQTableWidget.h" MyQTableWidget::MyQTableWidget(QWidget *parent) :QTableWidget(parent) { /******************** 实现表格控件拖拽item交换数据 ********************/ this->setDragDropMode(QAbstractItemView::DragDrop); this->setDragEnabled(true); this->setAcceptDrops(true); //选中一个Item this->setSelectionBehavior(QAbstractItemView::SelectItems); } MyQTableWidget::~MyQTableWidget() { } void MyQTableWidget::mousePressEvent(QMouseEvent *event) { m_spos = event->pos(); sitem = new QTableWidgetItem(); sitem = QTableWidget::itemAt(m_spos); if (sitem == NULL) { return; } temp = sitem->text(); QTableWidget::mousePressEvent(event); } void MyQTableWidget::dropEvent(QDropEvent *event) { m_dpos = event->pos(); ditem = new QTableWidgetItem(); ditem = QTableWidget::itemAt(m_dpos); if (ditem == NULL) { return; } sitem->setText(ditem->text()); ditem->setText(temp); }
四:在 item 里面添加CheckBox控件
1、添加选择功能
QTableWidgetItem* item = new QTableWidgetItem(); item = new QTableWidgetItem(); item->setCheckState(Qt::Unchecked); item->setText(QString::fromLocal8Bit("勾选")); item->setBackgroundColor(QColor(0x00, 0xFF, 0x00)); ui.tableWidget->setItem(row, 3, item);
2、复选框选择事件处理
// 连接信号和槽 connect(ui.tableWidget, SIGNAL(cellClicked(int, int)), this, SLOT(stateChecked(int, int))); // 实现槽函数 void test10292::stateChecked(int row, int column ) { if (column == 3) { QTableWidgetItem* item = ui.tableWidget->item(row, column); if (item != NULL) { if (item->checkState() == Qt::Checked) { // 选中红色 item->setBackgroundColor(QColor(0xFF, 0x00, 0x00)); } else if (item->checkState() == Qt::Unchecked) { // 没选中绿色 item->setBackgroundColor(QColor(0x00, 0xFF, 0x00)); } } } }
以上是关于Qt Table Widget常用操作的主要内容,如果未能解决你的问题,请参考以下文章
QT中table view怎么显示sqlite数据库的内容?