怎么用QTableView修改数据库内容

怎么用QTableView修改数据库内容,第1张

这个需要重写一些model的方法

当然你需要编辑也要实现自己的delegate

class MyTableDelgate : public QStyledItemDelegate

{

Q_OBJECT

public:

explicit MyTableDelgate(QObject parent = 0);

protected:

//basic function for a read-only delegate, you can draw anything with the painter

void paint(QPainter painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;

QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;

//edit 5 function

QWidget createEditor(QWidget parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;

void setEditorData(QWidget editor, const QModelIndex &index) const;

void setModelData(QWidget editor, QAbstractItemModel model, const QModelIndex &index) const;

void updateEditorGeometry ( QWidget editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const;

private:

QLineEdit m_LineEdit;

};

model

class MyTableDelgate : public QStyledItemDelegate

{

Q_OBJECT

public:

explicit MyTableDelgate(QObject parent = 0);

protected:

//basic function for a read-only delegate, you can draw anything with the painter

void paint(QPainter painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;

QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;

//edit 5 function

QWidget createEditor(QWidget parent, const QStyleOptionViewItem &option, const QModelIndex &index) const;

void setEditorData(QWidget editor, const QModelIndex &index) const;

void setModelData(QWidget editor, QAbstractItemModel model, const QModelIndex &index) const;

void updateEditorGeometry ( QWidget editor, const QStyleOptionViewItem & option, const QModelIndex & index ) const;

};

以下数据(可以理解为是DBMS核心组成的系统级数据库)是不能重命名的:

1) 主数据库(Master)

Master数据库为系统数据库,是SQL Server中最重要的数据库,包含用户登录标识、系统配置信息、初始化等系统级信息,用于控制整个SQL Server系统的运行。系统管理员应经常备份Master数据库。

2) 模板数据库Model

Model数据库是用户数据库的模板。当新建用户数据库时,系统会自动将model数据库的内容复制到用户数据库中,所以可以通过修改model数据库对新数据库建立一个自定义的配置。例如,如果在model数据库中新增加一个表,则以后创建的所有用户数据库中都会含有这个表。

3) 调度数据库(Msdb)

Msdb数据库存储作业、报警和 *** 作人员的 *** 作信息,主要被SQL Server Agente用于进行复制或调度作业、管理报警及排除故障等活动。

4) 临时数据库(Tempdb)

Tempdb数据库用于存储用户建立的临时表、临时触发器、用户声明的全局变量和用户通过游标筛选出来的数据,并为数据的排序提供一个临时性的工作空间。

如果重命名的是非上述的系统级数据库,则尝试把它原来的名字撤回去。

重载QSqlTableModel::data(const QModelIndex &index, int role) const函数;

QSqlTableModel::data(const QModelIndex &index, int role) const

{

if(role == Qt::BackgroundRole)

return QVariant(QColor(Qt::yellow));

}

怎么在一个model里面 *** 作另一个数据库表

建议你学一下hibernate

像你说的这样估计是有多表之间的关联,如表之间存在1对1、1对多、多对1的关系,这时是用hibernate可是将所有的表封装,在你从数据库差出某条数据时,hibernate可以帮你查处和这条数据相关的其他表中的数据,这样可以封装你可能用到的所有的类,进而,表面上你只查了一次,其实hibernate帮你把潜在需要的数据也封装了。

alter table TabName Modify (ColName ColNewType);不过需要注意的是字段中如果已经存在值,需要确认ColNewType兼容这些值类型,否则数据库不允许修改

以上就是关于怎么用QTableView修改数据库内容全部的内容,包括:怎么用QTableView修改数据库内容、sqlserver 数据库 修改了一个数据库的名字结果看不到实例下面任何数据库了、请问在QT4中我用QTableView 和QSqlTableModel *** 作数据库,我想改变tableview某行的背景色应该怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9734344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存