Qt Table Widget common actions

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 )); 
            } 
        } 
    } 
}

 

Guess you like

Origin www.cnblogs.com/duxie/p/11781412.html