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