A mouse suspension message displayed on the item
1, in the constructor open table Widget controls the mouse capture function
// turn on mouse capture function (to achieve a suspension function table widget) ui.tableWidget-> setMouseTracking ( to true );
2, and groove connection signal
connect(ui.tableWidget, SIGNAL( cellEntered(int, int)), this, SLOT(slotCellEntered(int, int)));
3, write slot function
void test10292::slotCellEntered(int r, int c) { QTableWidgetItem* item = ui.tableWidget->item(r, c); if (item == nullptr) { return; } QToolTip::showText(QCursor::pos(), item->text()); }
2: Click the header implement sorting
// connect signal and the groove Connect (ui.tableWidget-> The horizontalHeader (), the SIGNAL (sectionClicked ( int )), the this , the SLOT (sortHeader ( int ))); // implemented slot function void test10292 :: sortHeader ( int index) { IF (index == 2 ) { ui.tableWidget -> sortItems (index, the Qt :: DescendingOrder); return ; } ui.tableWidget -> sortItems (index, the Qt :: ascendingOrder); }
Three: Drag achieve two interchangeable item of content item
MyQTableWidget need to write a class inherits from QTableWidget, then rewrite mousePressEvent and dropEvent event handlers
MyQTableWidget.h file
#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 file
#include " MyQTableWidget.h " MyQTableWidget :: MyQTableWidget (QWidget * parent) : QTableWidget (parent) { / * ******************* achieve drag item exchange table control data ******************* * / the this -> setDragDropMode (QAbstractItemView :: the DragDrop); the this -> also setDragEnabled ( to true ); the this -> setAcceptDrops ( to true ); / / select one Item the this -> setSelectionBehavior (QAbstractItemView :: of 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 (); fill = new QTableWidgetItem (); fill = QTableWidget :: itemAt (m_dpos); if (cause == NULL) { return ; } Sitem -> setText (ditem-> text ()); ape -> setText (temp); }
Four: Add CheckBox control in item inside
1, add a selection function
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, check boxes to select event processing
// connect signal and the groove Connect (ui.tableWidget, the SIGNAL (cellClicked ( int , int )), the this , the SLOT (stateChecked ( int , int ))); // implemented slot function void test10292 :: stateChecked ( int Row, int column) { IF (column == . 3 ) { QTableWidgetItem * = ui.tableWidget- Item> Item (Row, column); IF (Item =! NULL) { IF (item-> checkState () == the Qt :: the Checked) { //Select the red item-> setBackgroundColor (QColor ( 0xFF , 0x00 , 0x00 )); } the else IF (item-> checkState () == Qt :: Unchecked) { // did not select the green item-> setBackgroundColor (QColor ( 0x00 , 0xFF , 0x00 )); } } } }