这个需要重写一些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某行的背景色应该怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)