qt qtableview插入进度条_Qt之QSqlTableModel的使用

本文介绍了Qt中QSqlTableModel的主要函数及其用途,包括数据表操作、记录管理、编辑策略等。QSqlRecord和QSqlField的功能也进行了讲解,帮助理解如何在Qt环境中进行数据库操作和表格视图的交互。
摘要由CSDN通过智能技术生成

点击上方“Qt学视觉”,选择“星标”公众号重磅干货,第一时间送达

想要学习的同学们还请认真阅读每篇文章,相信你一定会有所收获

1、QSqlTableModel的主要函数如下

  • 1、QSqlDatabase database() const

    • 返回其数据库连接

  • 2、void setTable(const QString &tableName)

    • 设置数据表名称,不立即读取记录,但会提取字段信息

  • 3、QString tableName() const

    • 但会设置的数据表名称

  • 4、void setFilter(const QString &filter)

    • 设置记录过滤条件

  • 5、void setSort(int column, Qt::SortOrder order)

    • 设置排序字段和排序规则,需调用select()才生效

  • 6、void sort(int column, Qt::SortOrder order)

    • 按列号和排序规则立即进行排序并获取数据

  • 7、void setEditStrategy(QSqlTableModel::EditStrategy strategy)

    • 设置编辑策略

  • 8、bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)

    • 设置表头,一般用于设置字段的显示名称

  • 9、int fieldIndex(const QString &fieldName) const

    • 根据字段名称返回其在模型中的字段序号,若字段不存在则返回-1

  • 10、bool isDirty() const

    • 若有未更新到数据库的修改,就返回true,否则返回false

  • 11、QSqlIndex primaryKey() const

    • 返回数据表的主索引

  • 12、int rowCount(const QModelIndex &parent = QModelIndex()) const

    • 返回记录条数

  • 13、bool select()

    • 查询数据表的数据,并使用设置的排序和过滤规则

  • 14、bool selectRow(int row)

    • 刷新获取指定行号的记录

  • 15、void clear()

    • 清除数据模型,释放所有获取的数据

  • 16、QSqlRecord record() const

    • 返回一条空记录,只有字段名,可用来获取字段信息

  • 17、QSqlRecord record(int row) const

    • 返回行号为row的一条记录,包含记录的数据

  • 18、bool setRecord(int row, const QSqlRecord &values)

    • 更新一条记录的数据到数据模型,源和目标之间用过字段名称匹配,而不是按位置匹配

  • 19、bool insertRecord(int row, const QSqlRecord &record)

    • 在行号row之前插入一条记录

  • 20、bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

    • 在行号row之前插入count空行,编辑策略为OnFieldChange或OnRowChange时只能插入一行

  • 21、bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

    • 从行号row开始,删除count行,若编辑策略为OnManualSubmit,需调用submitAll()才从数据表里删除

  • 22、void revertRow(int row)

    • 取消行号为row的记录的修改

  • 23、void revert()

    • 编辑策略为OnRowChange或OnFieldChange时,取消当前行的修改,对OnManualSubmit编辑策略无效

  • 24、void revertAll()

    • 取消所有未提交的修改

  • 25、bool submit()

    • 提交当前行的修改到数据库,对OnManualSubmit编辑策略无效

  • 26、bool submitAll()

    • 提交所有未更新的修改到数据库,若成功则返回true,否则返回false,错误的详细信息可以从lastError()获取

2、QSqlRecord的主要函数如下

    QSqlRecord封装了对记录的字段定义和数据的操作

  • 1、void clear()

    • 清除记录的所有字段定义和数据

  • 2、void clearValues()

    • 清除所有字段的数据,将字段数据内容设置为null

  • 3、bool contains(const QString &name) const

    • 判断记录是否含有名称为name的字段

  • 4、bool isEmpty() const

    • 若字段里没有字段返回true,否则返回false

  • 5、int count() const

    • 返回记录的字段个数

  • 6、QString fieldName(int index) const

    • 返回序号为index的字段的名称

  • 7、int indexOf(const QString &name) const

    • 返回字段名称为name的字段的序号,如果字段不存在则返回-1

  • 8、QSqlField field(const QString &name) const

    • 返回字段名称为name的字段对象

  • 9、QVariant value(const QString &name) const

    • 返回字段名称为name的字段的值

  • 10、void setValue(const QString &name, const QVariant &val)

    • 设置字段名称为name的字段的值为val

  • 11、bool isNull(const QString &name) const

    • 判断字段名称为name的字段数据是否为null

  • 12、void setNull(const QString &name)

    • 设置名称为name的字段的值为null

3、QSqlField的主要函数如下

  • 1、void clear()

    • 清除字段数据,设为NULL,如果字段是只读的,则不清除

  • 2、bool isNull() const

    • 判断字段值是否为NULL

  • 3、void setReadOnly(bool readOnly)

    • 设置一个字段为只读,只读的字段不能用setValue()函数设置值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在QtQTableView插入复选框,可以使用QCheckBox作为QTableView中的单元格小部件。以下是一个简单的示例: ``` // 创建一个QStandardItemModel,该模型将在QTableView使用 QStandardItemModel *model = new QStandardItemModel(); // 构建表头 model->setHorizontalHeaderLabels(QStringList() << "Name" << "Age" << "Married"); // 添加数据行 QList<QStandardItem *> row1 = QList<QStandardItem *>() << new QStandardItem("John") << new QStandardItem("30") << new QStandardItem(); QList<QStandardItem *> row2 = QList<QStandardItem *>() << new QStandardItem("Jane") << new QStandardItem("25") << new QStandardItem(); // 创建QCheckBox小部件并将其设置为单元格的小部件 QCheckBox *marriedBox1 = new QCheckBox(); QCheckBox *marriedBox2 = new QCheckBox(); row1[2]->setCheckable(true); row1[2]->setCheckState(Qt::Unchecked); row1[2]->setData(QVariant::fromValue(marriedBox1), Qt::UserRole+1); row2[2]->setCheckable(true); row2[2]->setCheckState(Qt::Unchecked); row2[2]->setData(QVariant::fromValue(marriedBox2), Qt::UserRole+1); // 将数据行添加到模型中 model->appendRow(row1); model->appendRow(row2); // 将模型设置为QTableView的模型 QTableView *tableView = new QTableView(); tableView->setModel(model); // 将QCheckBox小部件添加到单元格中 tableView->setIndexWidget(model->index(0, 2), marriedBox1); tableView->setIndexWidget(model->index(1, 2), marriedBox2); ``` 在上面的示例中,我们使用QStandardItemModel作为QTableView的模型,并将QCheckBox小部件添加到第三列中的单元格中。我们还将QCheckBox存储为QStandardItem的数据,以便稍后可以轻松地访问它。 最后,我们使用setIndexWidget函数将QCheckBox小部件添加到单元格中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值