QT--Table View

MVC模式

M model 模型
V View 视图
C Controller 控制器
Table View 可以说就是按照MVC模式设置的一个控件。
TableView类似于ListView,它可添加滚动条、选择和可调整大小的标题等部分,与ListView一样,每行的数据都是通过模型提供的。
视图部分全由Table View控制,如字体大小颜色等,只管显示
模型提供内容给table View显示。

例子

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QStringList>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void display_content(int row,int col,QString content);

private:
    Ui::MainWindow *ui;
    //构造model
    QStandardItemModel * model;
};

#endif // MAINWINDOW_H

MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->model = new QStandardItemModel;
    //设置表头
    this->model->setHorizontalHeaderItem(0,new QStandardItem("hhhh"));
    this->model->setHorizontalHeaderItem(1,new QStandardItem("aaaa"));
    this->model->setHorizontalHeaderItem(2,new QStandardItem("bbbb"));
    this->ui->tableView->setColumnWidth(0,100);
    this->ui->tableView->setColumnWidth(1,100);
    this->ui->tableView->setColumnWidth(2,100);
    //绑定model和view
    this->ui->tableView->setModel(model);
    //显示内容
    display_content(0,0,"Duncan");
    display_content(0,1,"张三");
    display_content(0,2,"李四");

}

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

void MainWindow::display_content(int row,int col,QString content)
{
   this->model->setItem(row,col,new QStandardItem(content));
}

ui界面只拉了一个Table View,object name没改

效果图:
在这里插入图片描述

--------------

构造model的时候使用QStandardItemModel Class 标准条目模型
设置视图内容使用QStandardItem
使用的时候包含两个头文件

#include  <QStandardItem>
#include  <QStandardItemModel>
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Qt中创建一个带有分页功能的表格视图,您可以使用QTableView和QAbstractTableModel类。首先,您需要创建一个自定义的TableModel类,该类继承自QAbstractTableModel,并重写一些方法,如rowCount()、columnCount()、data()等,以便为表格提供数据。 以下是一个简单的示例TableModel类: ```cpp class CustomTableModel : public QAbstractTableModel { public: CustomTableModel(QObject *parent = nullptr); // 重写rowCount、columnCount、data方法 int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; // 自定义方法,用于设置表格数据 void setTableData(const QVector<QVector<QString>> &data); private: QVector<QVector<QString>> m_tableData; // 存储表格数据 }; ``` 在这个TableModel类中,我们使用一个QVector来存储表格数据,并提供了一个setTableData()方法,用于设置表格数据。 接下来,您需要在Qt中创建一个QTableView,并将其与自定义的TableModel类实例化。然后,您需要设置分页器,以便用户可以浏览不同的表格页面。 以下是一个简单的示例: ```cpp // 创建QTableView实例 QTableView *tableView = new QTableView(this); // 实例化自定义的TableModel类 CustomTableModel *model = new CustomTableModel(this); // 设置表格数据 QVector<QVector<QString>> tableData = {{"A1", "B1", "C1"}, {"A2", "B2", "C2"}, {"A3", "B3", "C3"}, {"A4", "B4", "C4"}, {"A5", "B5", "C5"}, {"A6", "B6", "C6"}, {"A7", "B7", "C7"}, {"A8", "B8", "C8"}, {"A9", "B9", "C9"}, {"A10", "B10", "C10"}, {"A11", "B11", "C11"}, {"A12", "B12", "C12"}, {"A13", "B13", "C13"}, {"A14", "B14", "C14"}, {"A15", "B15", "C15"}}; model->setTableData(tableData); // 设置TableModel为QTableView的model tableView->setModel(model); // 设置分页器 QSqlTableModel *sqlModel = new QSqlTableModel(this); sqlModel->setTable("tablename"); sqlModel->setEditStrategy(QSqlTableModel::OnManualSubmit); tableView->setModel(sqlModel); tableView->setSortingEnabled(true); tableView->verticalHeader()->hide(); tableView->horizontalHeader()->setStretchLastSection(true); tableView->setSelectionBehavior(QAbstractItemView::SelectRows); tableView->setSelectionMode(QAbstractItemView::SingleSelection); tableView->setShowGrid(false); tableView->setAlternatingRowColors(true); QItemSelectionModel *selectionModel = tableView->selectionModel(); connect(selectionModel, SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), this, SLOT(onCurrentRowChanged(QModelIndex,QModelIndex))); connect(tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onDoubleClicked(QModelIndex))); ``` 在这个示例中,我们设置了一个QSqlTableModel实例,用于从数据库中获取数据,并启用了分页器。您可以根据您的需求自定义分页器的行数和列数。 最后,您需要实现一些槽函数来处理用户在分页器上的操作,例如翻页或更改每页显示的行数。 希望这可以帮助您开始使用Qt创建带有分页功能的表格视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值