0
我有一個數據庫驅動的qt應用程序,它顯示客戶列表,當您單擊客戶時,它會打開另一個窗口,允許您編輯客戶詳細信息並將其保存到數據庫。在QT中更新另一個視圖
這工作正常,但即時通訊想知道如何觸發其他窗口中的tableView刷新。
在Objective-C中有一些名爲delegates的東西,我有一種感覺,這是類似的,但有人可以澄清這樣做的正確方法嗎?
謝謝。
病人列表:
#include "patientlist.h"
#include "ui_patientlist.h"
#include "database.h"
#include <QtSql>
#include <QtDebug>
PatientList::PatientList(QWidget *parent) :
QWidget(parent),
ui(new Ui::PatientList)
{
ui->setupUi(this);
QSqlQuery qry;
if(qry.exec("SELECT patient_id,firstname,lastname FROM patients")){
qDebug() << "Success";
while(qry.next()){
QTreeWidgetItem *itm = new QTreeWidgetItem(ui->treeWidget);
QString label = QString(qry.value(0).toString());
itm->setText(0,label);
label = QString(qry.value(1).toString());
itm->setText(1,label);
label = QString(qry.value(2).toString());
itm->setText(2,label);
ui->treeWidget->addTopLevelItem(itm);
}
}
else
{
qDebug() << "Error";
}
connect(
ui->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),
this, SLOT(OnMouseDoubleClicked(QTreeWidgetItem*, int))
);
}
PatientList::~PatientList()
{
delete ui;
}
void PatientList::OnMouseDoubleClicked(QTreeWidgetItem *item, int id)
{
int patient_id = item->text(0).toInt();
editPatient = new EditPatient();
editPatient->loadPatient(patient_id);
editPatient->show();
}
編輯患者:
#include "editpatient.h"
#include "ui_editpatient.h"
EditPatient::EditPatient(QWidget *parent) :
QWidget(parent),
ui(new Ui::EditPatient)
{
ui->setupUi(this);
}
EditPatient::~EditPatient()
{
delete ui;
}
void EditPatient::loadPatient(int patient_id)
{
clearForm();
patient = new Patient();
patient->Load(patient_id);
if(patient->getPatientId() > 0){
qDebug() << "Patient ID: " << patient->getPatientId();
ui->patientidInput->setText(QString::number(patient->getPatientId()));
ui->firstnameInput->setText(patient->getFirstname());
ui->lastnameInput->setText(patient->getLastName());
}
}
void EditPatient::clearForm()
{
ui->patientidInput->setText("");
ui->firstnameInput->setText("");
ui->lastnameInput->setText("");
}
void EditPatient::on_saveButton_clicked()
{
patient->setFirstname(ui->firstnameInput->text());
patient->setLastname(ui->lastnameInput->text());
if(patient){
patient->Save();
}
}