QTableView + QSqlTableModel

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


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值