简单学习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;
}
关于信号和槽的操作明天再学习,后面还想结合数据库一起学习。
竞争很大,但是每天进步一点点对我来说就够了。