将Qtableview中的数据显示在相应的控件上

学习Qt有一段时间了,几天做东西需要将Qtableview中的数据显示在相应的控件上,想看好久,终于搞定了,特意拿出来,和大家分享,也当做是自己的一个学习笔记。

    首先我的Qtableview中的的内容是从数据库中查找出来再显示 出来的。下面是以个关于某个公司信息种类的数据。这是数据库中的记录

    效果是这样的:

   

点击上面的某行数据,下面的lineEdit中就会显示出来对应的数据。如下图所示

再点击第二条数据,也会显示出来。


效果很不错,完美的实现了,自己非常的高兴,将过程写出来,对于初学者而言,可以参考参考。高手请路过

首先,我想到是必须建立信号和槽的连接,只有这样才能实现实时的显示,到底需要哪个信号呢?既然是鼠标的单击,那肯定就是click信号了。

  1. <span style="font-family:KaiTi_GB2312;font-size:18px;"> connect(ui->Supplier_tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(ShowSupplyclick()));</span>  
<span style="font-family:KaiTi_GB2312;font-size:18px;"> connect(ui->Supplier_tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(ShowSupplyclick()));</span>
将界面中的Qtableview的点击信号,和自己写的槽函数进行关联

下面是自己写的槽函数


  1. <span style="font-family:KaiTi_GB2312;font-size:18px;">/* 
  2.  *获取当前鼠标点击的数据表中的内容,并将其显示在相应的控件上 
  3. */  
  4. void Basic_Data_Dialog::ShowSupplyclick()  
  5. {  
  6.     static QSqlQueryModel supplymodel(ui->Supplier_tableView);  
  7.     supplymodel.setQuery(QString("select * from Supply;"));  
  8.     int row = ui->Supplier_tableView->currentIndex().row();  
  9.     QSqlRecord record = supplymodel.record(row);  
  10.     ui->EditsupId->setText(record.value(0).toString());  
  11.     ui->EditSupName->setText(record.value(1).toString());  
  12.     ui->EditSupAdress->setText(record.value(2).toString());  
  13.     ui->EditSupPhon->setText(record.value(3).toString());  
  14.     ui->EditSupMail->setText(record.value(4).toString());  
  15.     ui->EditSupRemark->setText(record.value(5).toString());  
  16. }</span>  
<span style="font-family:KaiTi_GB2312;font-size:18px;">/*
 *获取当前鼠标点击的数据表中的内容,并将其显示在相应的控件上
*/
void Basic_Data_Dialog::ShowSupplyclick()
{
    static QSqlQueryModel supplymodel(ui->Supplier_tableView);
    supplymodel.setQuery(QString("select * from Supply;"));
    int row = ui->Supplier_tableView->currentIndex().row();
    QSqlRecord record = supplymodel.record(row);
    ui->EditsupId->setText(record.value(0).toString());
    ui->EditSupName->setText(record.value(1).toString());
    ui->EditSupAdress->setText(record.value(2).toString());
    ui->EditSupPhon->setText(record.value(3).toString());
    ui->EditSupMail->setText(record.value(4).toString());
    ui->EditSupRemark->setText(record.value(5).toString());
}</span>

    代码中写的很详细了,就不用过多的介绍了。上面的  record.value(0).toString() 就是对应数据表中的某个列的属性,必须和自己数据表中的列对应,否则显示的内容对应不上,这点一点要注意。


在Qt,将数据显示在界面上通常涉及到使用各种控件,比如`QLabel`, `QListWidget`, `QTableView`, `QGraphicsView`等等。Qt提供了丰富的控件来满足不同数据展示的需求。下面以最常用的几种方式为例进行介绍: 1. 使用`QLabel`显示文本数据: `QLabel`是最简单的控件之一,它可以用来显示文本或者图片。当你需要在界面上展示一些不经常变化的文本信息时,可以使用`QLabel`。 ```cpp QLabel *label = new QLabel(this); label->setText("这是要显示的文本"); ``` 2. 使用`QListWidget`展示列表数据: 如果你想要在界面上显示一个列表,并且可以对列表项进行操作(如选、编辑等),那么`QListWidget`是一个不错的选择。 ```cpp QListWidget *listWidget = new QListWidget(this); listWidget->addItem("列表项1"); listWidget->addItem("列表项2"); ``` 3. 使用`QTableView`展示表格数据: 当需要展示多行多列的表格数据时,`QTableView`提供了很好的支持。它通常与模型(Model)一起使用,如`QStandardItemModel`。 ```cpp QTableView *tableView = new QTableView(this); QStandardItemModel *model = new QStandardItemModel(this); model->setHorizontalHeaderLabels(QStringList() << "列1" << "列2"); model->appendRow(new QStandardItem("行1列1") << new QStandardItem("行1列2")); tableView->setModel(model); ``` 4. 使用`QGraphicsView`和`QGraphicsScene`展示复杂图形数据: 如果数据是图形化的,比如图表或者复杂的场景,`QGraphicsView`和`QGraphicsScene`可以用来展示这些数据。 ```cpp QGraphicsScene *scene = new QGraphicsScene(this); QGraphicsRectItem *rect = scene->addRect(QRectF(0, 0, 100, 100)); QGraphicsView *view = new QGraphicsView(scene, this); ``` 根据你的具体需求,选择合适的控件并进行相应的编程,就可以将数据展示在Qt的界面。记得要根据数据的类型和用户的交互需求来选择最合适的控件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值