QT-TableView使用示例

本文详细描述了如何在C++中使用Qt的QStandardItemModel初始化TableView,包括设置表头、行列数以及响应查询按钮,进行数据库查询并动态添加新行。
摘要由CSDN通过智能技术生成
  • TableView 初始化
void myc::setTableHead()
{
    if(ui->tableView->model()==nullptr){
      QStandardItemModel *  theModel = new QStandardItemModel(ui->tableView);
      ui->tableView->setModel(theModel);
   		 }
    QStandardItemModel * theModel = (QStandardItemModel*) ui->tableView->model();
	 theSelection = new QItemSelectionModel(theModel);//选中模型类 从ui中获取 而不是设置类成员
	 ui->tableView->setSelectionModel(theSelection);
    QStringList headerList;
    headerList<<"序号"<<"报告编号"<<"姓名"<<"性别"<<"创建时间";
    theModel->setHorizontalHeaderLabels(headerList);
    theModel->setRowCount(5);  //设置表格行数 
    ui->tableView->setGridStyle(Qt::SolidLine);
    ui->tableView->horizontalHeader()->setStretchLastSection(true);
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
    ui->tableView->verticalHeader()->setVisible(true);   // 是否隐藏列表头
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); //是否可编辑 cell
    ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);    //弹出右键菜单策略
    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //一选就选择整行
    ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection); //只选择一行/多行
}
  • 添加一行数据

    void myc::querybtn_clicked()
    {
        
        QStandardItemModel * theModel = (QStandardItemModel*)ui->tableView->model();
        int start= theModel->rowCount();  // 有start也就是从表格现有的行数下一个开始
        QString sql =  QString("select * from patients");
        QList<QList<QVariant>> query_list = con->dbquery(sql);
        for(int i=0;i<query_list.length();i++){
            QList<QStandardItem*> ItemList;
            ItemList<<(new QStandardItem(query_list[i][0].toString()));
            ItemList<<(new QStandardItem(query_list[i][1].toString()));
            ItemList<<(new QStandardItem(query_list[i][2].toString()));
            ItemList<<(new QStandardItem(query_list[i][3].toString()=="0"?"女":"男"));
            ItemList<<(new QStandardItem(query_list[i][4].toString()));
            theModel->insertRow(i+start,ItemList);  // 插入
        }
    
    
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值