用表格方便显示数据表table。
添加代码:
DBModelViewDialog.h
#ifndef DBMODELVIEWDIALOG_H
#define DBMODELVIEWDIALOG_H
#include <QDialog>
#include <QtSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMessageBox>
#include <QDebug>
#include <QTableWidgetItem>
namespace Ui {
class DBModelViewDialog;
}
class DBModelViewDialog : public QDialog
{
Q_OBJECT
public:
explicit DBModelViewDialog(QWidget *parent = nullptr);
~DBModelViewDialog();
private:
Ui::DBModelViewDialog *ui;
bool hasInit;
QSqlDatabase db;
private slots:
void on_tableWidget_itemChanged(QTableWidgetItem *item);
};
#endif // DBMODELVIEWDIALOG_H
DBModelViewDialog.cpp
#include "dbmodelviewdialog.h"
#include "ui_dbmodelviewdialog.h"
DBModelViewDialog::DBModelViewDialog(QWidget *parent) :
QDialog(parent),
hasInit(false),
ui(new Ui::DBModelViewDialog)
{
ui->setupUi(this);
db=QSqlDatabase::addDatabase("QPSQL");
db.setHostName("127.0.0.1");
db.setUserName("postgres");
db.setPassword("postgres");
db.setDatabaseName("postgres");
//ui->tableWidget->setColumnHidden(0, true);
//ui->tableWidget->setRowCount(8);
int rowNum = 0;
if(db.open())
{
qDebug() << "DB opened";
QSqlQuery query;
if(query.exec("SELECT id, name, age, gender, married FROM employee"))
{
qDebug() << "DB opened adn query";
while(query.next())
{
qDebug() << query.value(0) << query.value(1) << query.value(2) << query.value(3) << query.value(4);
QString id = query.value(0).toString();
QString name = query.value(1).toString();
QString age = query.value(2).toString();
int gender = query.value(3).toInt();
bool married = query.value(4).toBool();
ui->tableWidget->setRowCount(ui->tableWidget->rowCount()+1);
//qDebug() << "row count: " << ui->tableWidget->rowCount();
//rowNum = ui->tableWidget->rowCount();
//ui->tableWidget->insertRow(rowNum);
//qDebug() << "row count: " << ui->tableWidget->rowCount();
QTableWidgetItem* idItem = new QTableWidgetItem(id);
QTableWidgetItem* nameItem = new QTableWidgetItem(name);
QTableWidgetItem* ageItem = new QTableWidgetItem(age);
QTableWidgetItem* genderItem = new QTableWidgetItem();
qDebug() << "id: " << id << " name: " << name << " age: " << age;
if(gender == 0)
genderItem->setData(0, "Male");
else
genderItem->setData(0, "Female");
QTableWidgetItem* marriedItem = new QTableWidgetItem();
if(married)
marriedItem->setData(0, "Yes");
else
marriedItem->setData(0, "No");
//qDebug() << "row count: " << ui->tableWidget->rowCount();
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 0, idItem);
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 1, nameItem);
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 2, ageItem);
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 3, genderItem);
ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, 4, marriedItem);
}
hasInit = true;
}
else
{
qDebug() << query.lastError().text();
}
}
else
{
qDebug() << "Failed to connect to database.";
}
}
DBModelViewDialog::~DBModelViewDialog()
{
db.close();
delete ui;
}
void DBModelViewDialog::on_tableWidget_itemChanged(QTableWidgetItem *item)
{
// if (hasInit)
// {
// QString id = ui->tableWidget->item(item->row(), 0)->data(0).toString();
// QString name = ui->tableWidget->item(item->row(), 1)->data(0).toString();
// QString age = QString::number(ui->tableWidget->item(item->row(), 2)->data(0).toInt());
// ui->tableWidget->item(item->row(), 2)->setData(0, age);
// QString gender;
// if (ui->tableWidget->item(item->row(), 3)->data(0).toString() == "Male") {
// gender = "0";
// } else {
// ui->tableWidget->item(item->row(), 3)->setData(0, "Female");
// gender = "1";
// }
// QString married;
// if (ui->tableWidget->item(item->row(), 4)->data(0).toString() == "No") {
// married = "0";
// } else {
// ui->tableWidget->item(item->row(), 4)->setData(0, "Yes");
// married = "1";
// }
// qDebug() << id << name << age << gender << married;
// QSqlQuery query;
// if (query.exec("UPDATE employee SET name = '" + name + "', age = '" + age + "', gender = '" + gender + "', married = '" + married + "' WHERE id = " + id)) {
// QMessageBox::information(this, "Update Success", "Data updated to database.");
// } else {
// qDebug() << query.lastError().text();
// }
// }
}
运行结果:
多谢,亲爱的美美。