Qt的table view学习

简单学习Qt的table view

文章参考:吓人的猿(Qt深入浅出(十五)QTableView)

tabel view类似于excel,目前用到就来学习学习。
目前暂且不管什么复杂的实现东西,我就想知道怎么用。
table view感觉就是一个展示的控件,数据来源要借助于<QStandardItemModel>

下面附上详细内容

//.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

// 我创建的是一个带ui的Widget
// widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QTableView>

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

//widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QStandardItemModel>

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

    QStandardItemModel *model = new QStandardItemModel(this);

    /*
    model->setItem(0,0,new QStandardItem("张三"));
    model->setItem(0,1,new QStandardItem("3"));
    model->setItem(0,2,new QStandardItem("男"));
    ui->tableView->setModel(model);
    */
    // 设置列字段名
    model->setColumnCount(3);
    model->setHeaderData(0,Qt::Horizontal,"姓名");
    model->setHeaderData(1,Qt::Horizontal,"年龄");
    model->setHeaderData(2,Qt::Horizontal,"性别");

	// 设置行字段名
    model->setRowCount(3);
    model->setHeaderData(0,Qt::Vertical,"记录一");
    model->setHeaderData(1,Qt::Vertical,"记录二");
    model->setHeaderData(2,Qt::Vertical,"记录三");

    model->setItem(0,0,new QStandardItem("张三"));
    model->setItem(0,1,new QStandardItem("3"));
    model->setItem(0,2,new QStandardItem("男"));

    model->setItem(1,0,new QStandardItem("李四"));
    model->setItem(1,1,new QStandardItem("4")); 
    model->setItem(1,2,new QStandardItem("女"));

    //model->removeRow(0);  // 删除行
    


    // 插入一行数据
    QList<QStandardItem*>list;
    list<<new QStandardItem("我")<<new QStandardItem("想")<<new QStandardItem("你");
    model->insertRow(2,list);
    list.clear();
    list<<new QStandardItem("嗯")<<new QStandardItem("再")<<new QStandardItem("见");
    model->insertRow(2,list);  // 再第二行后面插入一行

    ui->tableView->setModel(model);
    ui->tableView->setShowGrid(false);   // 表中的网格线false无,true有
}

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

最后的结果就是这样了

关于信号和槽的操作明天再学习,后面还想结合数据库一起学习。
竞争很大,但是每天进步一点点对我来说就够了。

猜你喜欢

转载自blog.csdn.net/qq_43833364/article/details/105670557