Qt学习-12 <QTableWidget>

——  均为自学笔记,如有错误请指正


 本文参考 Qt QTableWidget表格控件用法

一、说明

 1. 区域说明

分为 3 个区域:

  • 区域①:行表头,可自定义
  • 区域②:列表头,可自定义
  • 区域③:数据区,表格中所有的数据都位于此区域,该区域内可以存放单元格,也可以存放按钮、文本框等控件。

注:默认情况下,会显示表头,表头的内容为行号或列号。表头可隐藏

2. QTableWidget &QTableView  区别
  • QTableWidget 继承自 QTableView 类,QTableView 类也可以用来显示表格控件。
  • QTableWidget 只适合显示少量的数据(几百或几千个),若想要显示更多的数据,应该用 QTableView。

二、使用

1. 表格的创建
  • 头文件
// 引入头文件
#include <QTableWidget>
  • 构造函数
//(在指定父窗口中)创建一个空表格 不显示任何单元格
QTableWidget(QWidget *parent = Q_NULLPTR)

//(在指定父窗口中)创建一个有行列的表格
//QTableWidget 表格单元格的行标和列标都是从 0 开始 
QTableWidget(int rows, int columns, QWidget *parent = Q_NULLPTR)

 2. 单元格 <QTableWidgetItem类>
  • 头文件
// 引入头文件
#include <QTableWidgetItem>
  • 构造函数
QTableWidgetItem(int type = Type)

//text 指定单元格要显示的文本(字符串)
QTableWidgetItem(const QString &text, int type = Type)

//icon 指定单元格要显示的图标  
//type 有默认值,很少使用
QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type)

QTableWidgetItem(const QTableWidgetItem &other)        //复制(拷贝)构造函数

  • 常用成员方法

 3. QTableWidget类常用 成员方法

 4. QTableWidget类信号和槽
  • 信号函数

  •  槽函数

 

 三、举例

#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QStringList>
#include <QDebug>
#include <QPushButton>
using namespace std;

class QMyLabel:public QLabel{
    Q_OBJECT
public slots:
    void rsetText(QTableWidgetItem * item);
};

void QMyLabel::rsetText(QTableWidgetItem * item){
    this->setText(item->text());
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //创建一个窗口,作为输入框和列表框的父窗口
    QWidget widget;

    //设置窗口的标题
    widget.setWindowTitle("QTableWidget控件");
    //自定义窗口的大小
    widget.resize(900,500);
    //在 widget 窗口中添加一个 4 行 3 列的表格
    QTableWidget TableWidget(4,3,&widget);
    //自定义表格的尺寸和字体大小
    TableWidget.resize(900,350);
    TableWidget.setFont(QFont("宋体",20));
    //设置表格中每一行的表头
    TableWidget.setHorizontalHeaderLabels(QStringList() << "教程" << "网址" << "状态");
    //设置表格数据区内的所有单元格都不允许编辑
    TableWidget.setEditTriggers(QAbstractItemView::NoEditTriggers);
    //设置表格中每一行的内容
    TableWidget.setItem(0,0,new QTableWidgetItem("C语言教程"));
    TableWidget.setItem(0,1,new QTableWidgetItem("http://c.biancheng.net/c/"));
    TableWidget.setItem(0,2,new QTableWidgetItem("已更新完毕"));
    TableWidget.setItem(1,0,new QTableWidgetItem("Qt教程"));
    TableWidget.setItem(1,1,new QTableWidgetItem("http://c.biancheng.net/qt/"));
    TableWidget.setItem(1,2,new QTableWidgetItem("正在更新"));
    TableWidget.setItem(2,0,new QTableWidgetItem("C++教程"));
    TableWidget.setItem(2,1,new QTableWidgetItem("http://c.biancheng.net/cplus/"));
    TableWidget.setItem(2,2,new QTableWidgetItem("已更新完毕"));

    //向 widget 窗口中添加一个文本框
    QMyLabel lab;
    lab.setText("选中单元格");
    lab.setParent(&widget);
    //自定义文本框的尺寸和位置
    lab.resize(900,150);
    lab.move(0,350);
    lab.setAlignment(Qt::AlignCenter);
    lab.setFont(QFont("宋体",16));

    widget.show();
    //为表格和文本框之间建立关联,当用户点击表格中某个单元格时,文本框显示单元格内的文本内容。
    QObject::connect(&TableWidget,&QTableWidget::itemClicked,&lab,&QMyLabel::rsetText);
    return a.exec();
}
//QMyLabel类的定义应该放到 .h 文件中,本例中将其写到 main.cpp 中,程序最后需要添加 #include"当前源文件名.moc" 语句,否则无法通过编译。
#include "main.moc"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值