将计算列添加到Qt QSqlQueryModel中

时间:2015-04-15 08:12:55

标签: c++ qt

我将从这个下方的

计算每个结果的新行
QSqlQueryModel *model = new QSqlQueryModel();
model->setQuery("SELECT height,age from patients", DB->getDB());
model->setHeaderData(4,Qt::Horizontal,tr("height"));
model->setHeaderData(2,Qt::Horizontal,tr("age"));
ui->tableView->setModel(model);    
ui->tableView->show();

as

ratio = height/age;
我能做到吗?如何?

谢谢你!

2 个答案:

答案 0 :(得分:0)

你可以做到。

您可以访问QSqlQueryModel中的项目,如:

QSqlRecord rec = model->record(row); // get the row you need
QVariant height = rec.field("height").value(); // or access it via index
QVariant age = rec.field("age").value();
double ratio = height.toDouble() / age.toDouble();

只需根据您的需要调整代码,并为其添加值检查。

欢呼声

答案 1 :(得分:0)

谢谢你的帮助......我这样做了:

        QSqlQuery pyt(DB->getDB());
        pyt.prepare("SELECT h,a from patients");
        pyt.exec();

        QStandardItemModel *model = new QStandardItemModel(0,3,this);
        model->setHeaderData(0,Qt::Horizontal,tr("heigh"));
        model->setHeaderData(1,Qt::Horizontal,tr("age"));
        model->setHeaderData(2,Qt::Horizontal,tr("ratio"));

        while (pyt.next())
        {
           QList<QStandardItem*> NewRow;
           QString age = pyt.value(0).toString();
           QStandardItem *newColumn = new QStandardItem(age);
           NewRow.append(newColumn);
           QString height = pyt.value(1).toString();
           newColumn = new QStandardItem(height);
           NewRow.append(newColumn);
           newColumn = new QStandardItem(QVariant("MY RATIO"));
           NewRow.append(newColumn);

           model->appendRow(NewRow); 
        }

        ui->tableView->setModel(model);
        ui->tableView->show();