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;
}

最後的結果就是這樣了

關於信號和槽的操作明天再學習,後面還想結合數據庫一起學習。
競爭很大,但是每天進步一點點對我來說就夠了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章