QTableWidget

71 篇文章 4 订阅

QTableWidget
1.常用属性设置
2.设置水平和垂直标题
3.插入数据(行,列,widget,图标,图片拉伸插入)
4.获取选中的数据,单选删除,多选删除
5.信号事件

QTableWidget属性

QTableWidget 插入标题


1.setColumnCount(5);setRowCount(5)
2.setHorizontalHeaderItem(int column,QTableWidgetItem \*item)
3.setVerticalHeaderItem(int row,QTableWidgetItem \*item);
4.setVerticalHeaderItem(const QStringList &labels);
5.QTableWidgetItem \*horizontalHeaderItem(int column) const;

QTableWidget获取选中状态数据


1.QList<QTableWidgetItem*>selectedItems();
2.std::set<int> vecItemIndex; //保存选中行的索引
//返回当前的选择模式
3.QItemSelectionModel \*sels = TAB->selectionModel();
//返回所有选定的模型项目的索引列表
4.QModelIndexList sList = sels->selectedIndexes();
5.for(int i = 0;i < slist.count();i++)
{
    vecItemIndex.insert(sList.at(i).row());
}

QTableWidget删除数据


1.setRowCount
2.[slot] void removeColumn(int column);
3.[slot] void removeRow(int row);
4.QModelIndex currentIndex();


QTableWidget删除确认


1.int re = QMessageBox::information(NULL,"",msg,QStringLiteral("确认"),QStringLiteral("取消"))if(re == 0)
{

}

QTableWidget信号
1.cellEntered(int row,int column) setMouseTracking
2.鼠标移到item上,自定义widget不一定有效(bug)
3.itemEntered(QTableWidgetItem *item);
4.鼠标移到item上,自定义widget无效
5.cellChanged(int row,int column)
6.cellChicked(int row,int column)
7.cellDoubleClicked(int row,int column)
8.itemChanged(QTableWidgetItem* item)


#include "widget.h"
#include "ui_widget.h"
#include <QLabel>
#include <set>
#include <QMessageBox>

class MyHead : public QTableWidgetItem
{
public:
    MyHead(QString txt):QTableWidgetItem(txt)
    {

    }
    ~MyHead()
    {
        qDebug()<<this->text()<<" removed!";
    }
};

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    ui->tableWidget->setColumnCount(0);
    ui->tableWidget->setRowCount(0);

    ui->tableWidget->setColumnCount(5);
    ui->tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("Head1"));
    ui->tableWidget->setHorizontalHeaderItem(1,new QTableWidgetItem);
    ui->tableWidget->horizontalHeaderItem(1)->setText("Head2");
    ui->tableWidget->setHorizontalHeaderItem(2,new MyHead("MyHead3"));

    ui->tableWidget->setHorizontalHeaderItem(3,new MyHead("MyHead4"));
    ui->tableWidget->setHorizontalHeaderItem(4,new MyHead("MyHead5"));

    //设置标题列的宽度
    ui->tableWidget->setColumnWidth(0,200);    

    ui->tableWidget->setRowCount(3);
    QStringList list = {"col1","col2","col3"};
    ui->tableWidget->setVerticalHeaderLabels(list);

    //插入数据
    ui->tableWidget->setItem(0,0,new QTableWidgetItem("col 0,0"));
    ui->tableWidget->setItem(0,1,new QTableWidgetItem("col 0,1"));
    ui->tableWidget->setItem(0,2,new QTableWidgetItem("col 0,2"));
    ui->tableWidget->setItem(1,0,new QTableWidgetItem("col 1,0"));
    ui->tableWidget->setItem(2,0,new QTableWidgetItem("col 2,0"));

    //结尾添加
    int row = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(row);
    ui->tableWidget->setItem(row,0,new QTableWidgetItem("new row 4"));
    
    //开始添加
    ui->tableWidget->insertRow(0);
    ui->tableWidget->setItem(0,0,new QTableWidgetItem("new row 0"));

    //插入QIcon 图片 
    ui->tableWidget->setItem(0,1,new QTableWidgetItem("new row 1"));
    ui->tableWidget->item(0,1)->setIcon(QIcon("test.jpg"));
    ui->tableWidget->setRowHeight(0,80);
    ui->tableWidget->setIconSize(QSize(ui->tableWidget->rowHeight(0),ui->tableWidget->rowHeight(0)));

    //插入widget 图片 
    QLabel *img = new QLabel();
    QPixmap pix("test.jpg");

    //缩放到和表格单元的宽高一致
    pix = pix.scaled(ui->tableWidget->columnWidth(0),ui->tableWidget->rowHeight(row));
    img->setPixmap(pix);
    ui->tableWidget->setCellWidget(row,0,img);

    //设置鼠标跟踪
    ui->tableWidget->setMouseTracking(true);
}

void Widget::Del()
{
    //空行无法选择
    QList<QTableWidgetItem*> items = ui->tableWidget->selectedItems();
    for(int i = 0;i < items.size();i++)
    {
        qDebug()<<items[i]->row()<<":"<<items[i]->column()<<items[i]->text();
    }
    //选择模式
    QItemSelectionModel *smodel = ui->tableWidget->selectionModel();
    //获取所有的选择索引
    QModelIndexList slist = smodel->selectedIndexes();

    std::set<int> rows;
    for(int i = 0; i < slist.size(); i++)
    {
        //重复的会插入失败
        rows.insert(slist[i].row());
    }

    //给用户提示
    QString msg = QStringLiteral("你确认删除吗:");

    for(std::set<int>::iterator itr = rows.begin();itr != rows.end();itr++)
    {
        QTableWidgetItem *item  = ui->tableWidget->item(*itr,0);
        msg += "[";
        msg += QString::number(*itr + 1);
        msg += "]";
        if(item)
            msg += item->text();
        msg += "]";
    }
    int ret = QMessageBox::information(this,"",msg,QStringLiteral("确认"),QStringLiteral("取消"));
    if(ret != 0)
    {
        return ;
    }
    //删除多行
    for(;;)
    {
        //获取所有的选择索引
        QModelIndexList slist = smodel->selectedIndexes();
        if(slist.size() <= 0) break;
        ui->tableWidget->removeRow(slist[0].row());
    }
}


void Widget::ItemEntered(QTableWidgetItem* item)
{
    QString msg = "ItemEntered = ";
    if(item)
    {
        msg += QString::number(item->row());
        msg += ",";
        msg += QString::number(item->column());
        msg += item->text();
    }
    qDebug()<<msg;
}

void Widget::CellEntered(int row,int column)
{
    QString msg = "CellEntered = ";
    QTableWidgetItem *item = ui->tableWidget->item(row,column); 

    msg += QString::number(row);
    msg += ",";
    msg += QString::number(column);

    if(item)
    {
        msg += item->text();
    }
    qDebug()<<msg;
}


Widget::~Widget()
{
    delete ui;
}

QTableWidget样式
1.标题格式(上方,左侧)
2.间隔线
3.背景颜色的间隔

QTableWidget 标题的样式


QHeaderView::section
{
    background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,
                                     stop:0 #616161,stop:0.5 #505050,
                                     stop:0.6 #434343,stop:1 #656565);
    color:white;
    padding-left:4px;
    border:1px solid #6c6c6c;
}
QHeaderView::section:checked /*选中*/
QHeaderView::section:hover /*鼠标悬停*/


QTableWidget 内容交替背景样式


QTableWidget{
    background-color:rgb(135,223,155);
    alternate-background-color:rgb(135,223,255);
}

setAlternatingRowColors
QTableWidget::item::hover{background:#ffff50;color;black;}

ui-widget.h


#ifndef UI_WIDGET_H
#define UI_WIDGET_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QTableWidget>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QPushButton *deleteButton;
    QTableWidget *tableWidget;

    void setupUi(QWidget *Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QString::fromUtf8("Widget"));
        Widget->resize(873, 600);
        deleteButton = new QPushButton(Widget);
        deleteButton->setObjectName(QString::fromUtf8("deleteButton"));
        deleteButton->setGeometry(QRect(700, 40, 89, 25));
        tableWidget = new QTableWidget(Widget);
        if (tableWidget->columnCount() < 3)
            tableWidget->setColumnCount(3);
        QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(0, __qtablewidgetitem);
        QTableWidgetItem *__qtablewidgetitem1 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(1, __qtablewidgetitem1);
        QTableWidgetItem *__qtablewidgetitem2 = new QTableWidgetItem();
        tableWidget->setHorizontalHeaderItem(2, __qtablewidgetitem2);
        if (tableWidget->rowCount() < 19)
            tableWidget->setRowCount(19);
        QTableWidgetItem *__qtablewidgetitem3 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(0, __qtablewidgetitem3);
        QTableWidgetItem *__qtablewidgetitem4 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(1, __qtablewidgetitem4);
        QTableWidgetItem *__qtablewidgetitem5 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(2, __qtablewidgetitem5);
        QTableWidgetItem *__qtablewidgetitem6 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(3, __qtablewidgetitem6);
        QTableWidgetItem *__qtablewidgetitem7 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(4, __qtablewidgetitem7);
        QTableWidgetItem *__qtablewidgetitem8 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(5, __qtablewidgetitem8);
        QTableWidgetItem *__qtablewidgetitem9 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(6, __qtablewidgetitem9);
        QTableWidgetItem *__qtablewidgetitem10 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(7, __qtablewidgetitem10);
        QTableWidgetItem *__qtablewidgetitem11 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(8, __qtablewidgetitem11);
        QTableWidgetItem *__qtablewidgetitem12 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(9, __qtablewidgetitem12);
        QTableWidgetItem *__qtablewidgetitem13 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(10, __qtablewidgetitem13);
        QTableWidgetItem *__qtablewidgetitem14 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(11, __qtablewidgetitem14);
        QTableWidgetItem *__qtablewidgetitem15 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(12, __qtablewidgetitem15);
        QTableWidgetItem *__qtablewidgetitem16 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(13, __qtablewidgetitem16);
        QTableWidgetItem *__qtablewidgetitem17 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(14, __qtablewidgetitem17);
        QTableWidgetItem *__qtablewidgetitem18 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(15, __qtablewidgetitem18);
        QTableWidgetItem *__qtablewidgetitem19 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(16, __qtablewidgetitem19);
        QTableWidgetItem *__qtablewidgetitem20 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(17, __qtablewidgetitem20);
        QTableWidgetItem *__qtablewidgetitem21 = new QTableWidgetItem();
        tableWidget->setVerticalHeaderItem(18, __qtablewidgetitem21);
        QTableWidgetItem *__qtablewidgetitem22 = new QTableWidgetItem();
        tableWidget->setItem(0, 0, __qtablewidgetitem22);
        QTableWidgetItem *__qtablewidgetitem23 = new QTableWidgetItem();
        tableWidget->setItem(0, 1, __qtablewidgetitem23);
        QTableWidgetItem *__qtablewidgetitem24 = new QTableWidgetItem();
        tableWidget->setItem(0, 2, __qtablewidgetitem24);
        QTableWidgetItem *__qtablewidgetitem25 = new QTableWidgetItem();
        tableWidget->setItem(17, 0, __qtablewidgetitem25);
        QTableWidgetItem *__qtablewidgetitem26 = new QTableWidgetItem();
        tableWidget->setItem(17, 1, __qtablewidgetitem26);
        QTableWidgetItem *__qtablewidgetitem27 = new QTableWidgetItem();
        tableWidget->setItem(17, 2, __qtablewidgetitem27);
        QTableWidgetItem *__qtablewidgetitem28 = new QTableWidgetItem();
        tableWidget->setItem(18, 0, __qtablewidgetitem28);
        QTableWidgetItem *__qtablewidgetitem29 = new QTableWidgetItem();
        tableWidget->setItem(18, 1, __qtablewidgetitem29);
        QTableWidgetItem *__qtablewidgetitem30 = new QTableWidgetItem();
        tableWidget->setItem(18, 2, __qtablewidgetitem30);
        tableWidget->setObjectName(QString::fromUtf8("tableWidget"));
        tableWidget->setGeometry(QRect(10, 10, 661, 581));
        tableWidget->setStyleSheet(QString::fromUtf8("QHeaderView::section{\n"
"   background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));\n"
"   color: rgb(243, 243, 243);\n"
"   border:1px solid rgba(120,0,0,255);\n"
"}\n"
"\n"
"QHeaderView::section:checked{/*\351\200\211\344\270\255*/\n"
"   background-color: rgb(114, 159, 207);\n"
"}\n"
"\n"
"QHeaderView::section:hover{/*\351\274\240\346\240\207\346\202\254\345\201\234*/\n"
"   background-color: rgb(164, 12, 12);\n"
"}\n"
"\n"
"QTableWidget{\n"
"   background-color: rgb(114, 159, 207);\n"
"   alternate-background-color: rgb(117, 80, 123);\n"
"   color:black;\n"
"}\n"
""));
        tableWidget->setAlternatingRowColors(true);
        tableWidget->horizontalHeader()->setVisible(true);
        tableWidget->horizontalHeader()->setCascadingSectionResizes(true);
        tableWidget->horizontalHeader()->setMinimumSectionSize(100);
        tableWidget->horizontalHeader()->setProperty("showSortIndicator", QVariant(true));
        tableWidget->horizontalHeader()->setStretchLastSection(true);
        tableWidget->verticalHeader()->setVisible(false);

        retranslateUi(Widget);
        QObject::connect(deleteButton, SIGNAL(clicked()), Widget, SLOT(Del()));
        QObject::connect(tableWidget, SIGNAL(itemEntered(QTableWidgetItem*)), Widget, SLOT(ItemEntered(QTableWidgetItem*)));
        QObject::connect(tableWidget, SIGNAL(cellEntered(int,int)), Widget, SLOT(CellEntered(int,int)));

        QMetaObject::connectSlotsByName(Widget);
    } // setupUi

    void retranslateUi(QWidget *Widget)
    {
        Widget->setWindowTitle(QCoreApplication::translate("Widget", "Widget", nullptr));
        deleteButton->setText(QCoreApplication::translate("Widget", "\345\210\240\351\231\244", nullptr));
        QTableWidgetItem *___qtablewidgetitem = tableWidget->horizontalHeaderItem(0);
        ___qtablewidgetitem->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\345\210\227", nullptr));
        QTableWidgetItem *___qtablewidgetitem1 = tableWidget->horizontalHeaderItem(1);
        ___qtablewidgetitem1->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\345\210\2272", nullptr));
        QTableWidgetItem *___qtablewidgetitem2 = tableWidget->horizontalHeaderItem(2);
        ___qtablewidgetitem2->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\345\210\2273", nullptr));
        QTableWidgetItem *___qtablewidgetitem3 = tableWidget->verticalHeaderItem(0);
        ___qtablewidgetitem3->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\2141", nullptr));
        QTableWidgetItem *___qtablewidgetitem4 = tableWidget->verticalHeaderItem(1);
        ___qtablewidgetitem4->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem5 = tableWidget->verticalHeaderItem(2);
        ___qtablewidgetitem5->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem6 = tableWidget->verticalHeaderItem(3);
        ___qtablewidgetitem6->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem7 = tableWidget->verticalHeaderItem(4);
        ___qtablewidgetitem7->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem8 = tableWidget->verticalHeaderItem(5);
        ___qtablewidgetitem8->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem9 = tableWidget->verticalHeaderItem(6);
        ___qtablewidgetitem9->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem10 = tableWidget->verticalHeaderItem(7);
        ___qtablewidgetitem10->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem11 = tableWidget->verticalHeaderItem(8);
        ___qtablewidgetitem11->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem12 = tableWidget->verticalHeaderItem(9);
        ___qtablewidgetitem12->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem13 = tableWidget->verticalHeaderItem(10);
        ___qtablewidgetitem13->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem14 = tableWidget->verticalHeaderItem(11);
        ___qtablewidgetitem14->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem15 = tableWidget->verticalHeaderItem(12);
        ___qtablewidgetitem15->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem16 = tableWidget->verticalHeaderItem(13);
        ___qtablewidgetitem16->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem17 = tableWidget->verticalHeaderItem(14);
        ___qtablewidgetitem17->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem18 = tableWidget->verticalHeaderItem(15);
        ___qtablewidgetitem18->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem19 = tableWidget->verticalHeaderItem(16);
        ___qtablewidgetitem19->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\214", nullptr));
        QTableWidgetItem *___qtablewidgetitem20 = tableWidget->verticalHeaderItem(17);
        ___qtablewidgetitem20->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\2142", nullptr));
        QTableWidgetItem *___qtablewidgetitem21 = tableWidget->verticalHeaderItem(18);
        ___qtablewidgetitem21->setText(QCoreApplication::translate("Widget", "\346\226\260\345\273\272\350\241\2143", nullptr));

        const bool __sortingEnabled = tableWidget->isSortingEnabled();
        tableWidget->setSortingEnabled(false);
        QTableWidgetItem *___qtablewidgetitem22 = tableWidget->item(0, 0);
        ___qtablewidgetitem22->setText(QCoreApplication::translate("Widget", "1", nullptr));
        QTableWidgetItem *___qtablewidgetitem23 = tableWidget->item(0, 1);
        ___qtablewidgetitem23->setText(QCoreApplication::translate("Widget", "2", nullptr));
        QTableWidgetItem *___qtablewidgetitem24 = tableWidget->item(0, 2);
        ___qtablewidgetitem24->setText(QCoreApplication::translate("Widget", "3", nullptr));
        QTableWidgetItem *___qtablewidgetitem25 = tableWidget->item(17, 0);
        ___qtablewidgetitem25->setText(QCoreApplication::translate("Widget", "4", nullptr));
        QTableWidgetItem *___qtablewidgetitem26 = tableWidget->item(17, 1);
        ___qtablewidgetitem26->setText(QCoreApplication::translate("Widget", "5", nullptr));
        QTableWidgetItem *___qtablewidgetitem27 = tableWidget->item(17, 2);
        ___qtablewidgetitem27->setText(QCoreApplication::translate("Widget", "6", nullptr));
        QTableWidgetItem *___qtablewidgetitem28 = tableWidget->item(18, 0);
        ___qtablewidgetitem28->setText(QCoreApplication::translate("Widget", "7", nullptr));
        QTableWidgetItem *___qtablewidgetitem29 = tableWidget->item(18, 1);
        ___qtablewidgetitem29->setText(QCoreApplication::translate("Widget", "8", nullptr));
        QTableWidgetItem *___qtablewidgetitem30 = tableWidget->item(18, 2);
        ___qtablewidgetitem30->setText(QCoreApplication::translate("Widget", "9", nullptr));
        tableWidget->setSortingEnabled(__sortingEnabled);

    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值