1. 基础设置
database = QSqlDatabase::addDatabase("QSQLITE"); database.setDatabaseName("data.db"); database.open(); tableview = new QTableView; sModel = new QSqlTableModel(this,database); sModel->setTable("table"); tableview->setModel(sModel);
2.额外设置
tableview->setSelectionBehavior(QAbstractItemView::SelectRows);//选择整行 tableview->setGridStyle(Qt::DotLine);//设置格子线 tableview->setEditTriggers(QAbstractItemView::NoEditTriggers);//禁止编辑 tableview->verticalHeader()->hide();//隐藏第一列序号 tableview->horizontalHeader()->setStretchLastSection(true);//列填充 tableview->setContextMenuPolicy(Qt::CustomContextMenu);//开启右键 tableview->verticalHeader()->setDefaultSectionSize(20);//设置默认行高 tableview->setSelectionMode(QAbstractItemView::SingleSelection);//设置单选
3.设置 点击tableivew空白处 取消选中,
根据 https://blog.csdn.net/u011288190/article/details/52838148 修改
继承QTableView 重新实现mousePressEvent
class TableView : public QTableView { Q_OBJECT public: explicit TableView(QWidget *parent = 0); protected: void mousePressEvent(QMouseEvent *event); signals: void leftClicked(); }; TableView::TableView(QWidget* parent): QTableView(parent) { } void TableView::mousePressEvent(QMouseEvent *event) { setCurrentIndex(QModelIndex()); QTableView::mousePressEvent(event); QModelIndex index = currentIndex(); if(index.row() < 0 && index.column() <0) { emit leftClicked(); return; } }其他相关 http://www.jyguagua.com/?p=3653
右键区域选择
if(tableview->indexAt(p).row() == -1) return;
4.设置选中某一行 行标题字体的改变
5.qtableview 绑定每一列数据 的QSqlTableModel 数据源6.其他相关
http://qimo601.iteye.com/blog/1539147