学习Qt有一段时间了,几天做东西需要将Qtableview中的数据显示在相应的控件上,想看好久,终于搞定了,特意拿出来,和大家分享,也当做是自己的一个学习笔记。
代码中写的很详细了,就不用过多的介绍了。上面的 record.value(0).toString() 就是对应数据表中的某个列的属性,必须和自己数据表中的列对应,否则显示的内容对应不上,这点一点要注意。
首先我的Qtableview中的的内容是从数据库中查找出来再显示 出来的。下面是以个关于某个公司信息种类的数据。这是数据库中的记录
效果是这样的:
点击上面的某行数据,下面的lineEdit中就会显示出来对应的数据。如下图所示
再点击第二条数据,也会显示出来。
效果很不错,完美的实现了,自己非常的高兴,将过程写出来,对于初学者而言,可以参考参考。高手请路过
首先,我想到是必须建立信号和槽的连接,只有这样才能实现实时的显示,到底需要哪个信号呢?既然是鼠标的单击,那肯定就是click信号了。
- <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的点击信号,和自己写的槽函数进行关联
。
下面是自己写的槽函数:
- <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>
<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() 就是对应数据表中的某个列的属性,必须和自己数据表中的列对应,否则显示的内容对应不上,这点一点要注意。