簡單學習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;
}
關於信號和槽的操作明天再學習,後面還想結合數據庫一起學習。
競爭很大,但是每天進步一點點對我來說就夠了。