首先 了解一下QTableWidget 控件的属性
成员方法 |
功能 |
setText(const QString &text) |
设置单元格中的文本。 |
setlcon(const Qlcon &icon) |
给单元格添加图标。 |
setBackground(const QBrush &brush) |
设置单元格的背景。 |
setFont(const QFont &font) |
设置单元格中文本的字体。 |
setForeground(const QBrush &brush) |
设置单元格中字体的颜色。 |
setTextAlignment(int alignment) |
设置单元格中文本的对齐方式。 |
setToolTip(const QString &toolTip) |
给单元格设置提示信息。 |
他的一些函数
成员方法 |
功能 |
setRowCount(int rows) |
设置表格的行数。 |
setColumnCount(int columns) |
设置表格的列数。 |
setRowHeight(int row, int height) |
设置指定行的行高。 |
setColumnWidth(int column, int width) |
设置指定列的宽度。 |
setCellWidget(int row, int column,Widget *widget) |
向表格中的指定位置添加 widget控件。通过调用cellWidget(int row, int column)方法,可以获取指定位置出的控件。 |
setHorizontalHeaderLabels(consStringtList &labels) |
设置表格的水平表头。 |
setVerticalHeaderLabels(constQStringList &labels) |
设置表格的竖直表头。 |
setltem(int row, int column,QTableWVidgetltem *item) |
向表格指定位置添加单元格。。获取指定位置的单元格,可以借助 item(int row, int column)或者itemAt(int ax, int ay)方法。 |
setEditTriggers(EditTriggers triggers) |
当triggers参数值为QAbstractltemView::NoEditTriggers时,表示禁止用户编辑单元格。 |
resize(int w, int h) |
设置表格的尺寸。 |
setFont(const QFont &) |
设置表格数据区中文本的字体和大小。 |
他的信号和槽
信号函数 |
功能 |
cellClicked(int row,int column) |
当某个单元格被点击时,触发该信号,row和columu就是被点击的单元格的位置。 |
cellDoubleClicked(int row,int column) |
当某个单元格被双击时,触发该信号,row和columu就是被点击的单元格的位置。 |
cellEntered(int row,int column) |
当某个单元格被按下时,触发该信号,row和columu就是被点击的单元格的位置。 |
cellChanged(int row, int column) |
当某个单元格中的数据发生改变时,触发该信号,row和columu就是被改变的单元格的位置。 |
itemClicked(QTableWidgetltem *item)19- |
当某个单元格被点击时,触发该信号,item就是被点击的单元格。 |
itemDoubleClicked(QTableWVidgetltem *item) |
当某个单元格被双击时,触发该信号,item就是被双击的单元格。 |
itemEntered(QTableWVidgetltem *item) |
当某个单元格被按下时,触发该信号,item就是被按下的单元格。 |
itemChanged(QTableWidgetltem *item) |
当某个单元格中的数据发生改变时,触发该信号,item就是被改变的单元格。 |
槽函数 |
功能 |
clear() |
删除表格中所有单元格的内容,包括表头。 |
clearContents() |
不删除表头,仅删除表格中数据区内所有单元格的内容, |
insertColumn(int column) |
在表格第column列的位置插入一个空列。 |
insertRow(int row) |
在表格第row行的位置插入一个空行。 |
removeColumn(int column) |
删除表格中的第column列,该列的所有单元也会一并删除。 |
removeRow(int row) |
删除表格中的第row行,该行的所有单元格也会一并删除。 |
scrollToltem(const QTableWidgetltem*item, QAbstractltemView::ScrollHint hint= EnsureVisible) |
滑动到指定单元格 |
|
|
|
|
|
|
这里离我们创建了一个3x3的表格
QTableWidget tw(3,3,&w);
tw.resize(500,500);
tw.setItem(0,0,new QTableWidgetItem("阿里"));
tw.setItem(0,1,new QTableWidgetItem("www.1688.com"));
tw.setItem(0,2,new QTableWidgetItem("马云"));
tw.setItem(1,0,new QTableWidgetItem("腾讯"));
tw.setItem(1,1,new QTableWidgetItem("www.qq.com"));
tw.setItem(1,2,new QTableWidgetItem("马化腾"));
tw.setItem(2,0,new QTableWidgetItem("百度"));
tw.setItem(2,1,new QTableWidgetItem("www.baidu.com"));
tw.setItem(2,2,new QTableWidgetItem("李彦宏"));
然后我们实现了一个双击某一行 删除该行
QObject::connect(&tw,&QTableWidget::cellDoubleClicked,&tw,&QTableWidget::removeRow);
扩容一行
int rows=tw.rowCount();
tw.setRowCount(rows+1);
完整代码如下
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include <QApplication>
#include <QStringList>
#include <QListWidget>
#include <QTableWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
// QListWidget qlst(&w);
// qlst.addItem("百度");
QListWidgetItem s("阿里");
qlst.addItem(&s);
// qlst.addItem(new QListWidgetItem("阿里"));
// QStringList qs;
// qs<<"腾讯"<<"字节";
// qlst.addItems(qs);
// QObject::connect(&qlst,&QListWidget::itemDoubleClicked,&qlst,&QListWidget::clear);
QTableWidget tw(3,3,&w);
tw.resize(500,500);
tw.setItem(0,0,new QTableWidgetItem("阿里"));
tw.setItem(0,1,new QTableWidgetItem("www.1688.com"));
tw.setItem(0,2,new QTableWidgetItem("马云"));
tw.setItem(1,0,new QTableWidgetItem("腾讯"));
tw.setItem(1,1,new QTableWidgetItem("www.qq.com"));
tw.setItem(1,2,new QTableWidgetItem("马化腾"));
tw.setItem(2,0,new QTableWidgetItem("百度"));
tw.setItem(2,1,new QTableWidgetItem("www.baidu.com"));
tw.setItem(2,2,new QTableWidgetItem("李彦宏"));
tw.setRowCount(4);
tw.setItem(3,0,new QTableWidgetItem("子节"));
tw.setItem(3,1,new QTableWidgetItem("www.bytedance.com"));
tw.setItem(3,2,new QTableWidgetItem("张一鸣"));
tw.setHorizontalHeaderLabels(QStringList()<<"公司"<<"网址"<<"创始人");
//双击某一行 删除该行
QObject::connect(&tw,&QTableWidget::cellDoubleClicked,&tw,&QTableWidget::removeRow);
w.show();
return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}