Qt Table显示数据

1 篇文章 0 订阅

环境说明

Qt版本:5.12 Mingw32
操作系统:win10

实现的功能

Qt使用Table控件显示数据

直接上代码

头文件

//wigth.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QStandardItemModel>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    QStandardItemModel *model;
    void addLinemessage(QStringList list,int line);
};

#endif // WIDGET_H

//wigth.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QStandardItem>
#include <QStringList>
void Widget::addLinemessage(QStringList list,int line)
{
    for(int i=0;i<list.size();i++)
    {
        model->setItem(line,i,new QStandardItem(list.at(i)));
    }
}

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    model=new QStandardItemModel();
    ui->tableView->setModel(model);
    QStringList list;
    list<<"姓名"<<"班级"<<"性别"<<"年龄";
    for(int i=0;i<list.size();i++)
    {
    model->setHorizontalHeaderItem(i,new QStandardItem(list.at(i)));
    ui->tableView->setColumnWidth(i,100);
    }
   QStringList list1;
    list1<<"余瑞银"<<"机械一班"<<"男"<<"25";
    addLinemessage(list1,0);
}

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

界面展示

左右两边的控件均为QTableView。

在这里插入图片描述

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在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创建带有分页功能的表格视图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值