//在主界面中选中QTableWidget QTableWidget *tableWidget = new QTableWidget(this); //添加按钮 QPushButton *editButton = new QPushButton('编辑', this); connect(editButton, &QPushButton::clicked, this, ={ //获取当前选中的行 int row = tableWidget->currentRow(); //获取图书ID QString bookId = tableWidget->item(row, 0)->text(); //跳转到编辑界面 EditDialog *editDialog = new EditDialog(bookId, this); editDialog->show();

//修改QTableWidget显示的数据
QTableWidgetItem *item;
item = new QTableWidgetItem(bookId);
tableWidget->setItem(row, 0, item);
item = new QTableWidgetItem(editDialog->getBookName());
tableWidget->setItem(row, 1, item);
item = new QTableWidgetItem(editDialog->getAuthor());
tableWidget->setItem(row, 2, item);
item = new QTableWidgetItem(editDialog->getPublisher());
tableWidget->setItem(row, 3, item);
item = new QTableWidgetItem(editDialog->getPublishDate());
tableWidget->setItem(row, 4, item);
item = new QTableWidgetItem(editDialog->getPrice());
tableWidget->setItem(row, 5, item);
item = new QTableWidgetItem(editDialog->getBorrowed());
tableWidget->setItem(row, 6, item);
item = new QTableWidgetItem(editDialog->getBorrowerId());
tableWidget->setItem(row, 7, item);

//更新数据库
QSqlQuery query;
query.exec(QString("update LBook set 书名='%1', 作者='%2', 出版社='%3', 出版年月='%4', 价格='%5', 是否借出='%6', 借书证号='%7' where 图书ID='%8'" )
           .arg(editDialog->getBookName()).arg(editDialog->getAuthor()).arg(editDialog->getPublisher())
           .arg(editDialog->getPublishDate()).arg(editDialog->getPrice()).arg(editDialog->getBorrowed())
           .arg(editDialog->getBorrowerId()).arg(bookId));

});

//编辑界面代码(EditDialog类) class EditDialog : public QDialog { Q_OBJECT

public: EditDialog(QString bookId, QWidget *parent = nullptr); QString getBookName(); QString getAuthor(); QString getPublisher(); QString getPublishDate(); QString getPrice(); QString getBorrowed(); QString getBorrowerId();

private: QLineEdit *bookNameEdit; QLineEdit *authorEdit; QLineEdit *publisherEdit; QLineEdit *publishDateEdit; QLineEdit *priceEdit; QComboBox *borrowedComboBox; QLineEdit *borrowerIdEdit; };

EditDialog::EditDialog(QString bookId, QWidget *parent) : QDialog(parent) { setWindowTitle('编辑图书信息');

//查询数据库获取当前图书信息
QSqlQuery query;
query.exec(QString("select * from LBook where 图书ID='%1'" ).arg(bookId));
query.next();

//创建编辑框和标签
QLabel *bookNameLabel = new QLabel('书名:');
bookNameEdit = new QLineEdit(query.value(1).toString());
QLabel *authorLabel = new QLabel('作者:');
authorEdit = new QLineEdit(query.value(2).toString());
QLabel *publisherLabel = new QLabel('出版社:');
publisherEdit = new QLineEdit(query.value(3).toString());
QLabel *publishDateLabel = new QLabel('出版年月:');
publishDateEdit = new QLineEdit(query.value(4).toString());
QLabel *priceLabel = new QLabel('价格:');
priceEdit = new QLineEdit(query.value(5).toString());
QLabel *borrowedLabel = new QLabel('是否借出:');
borrowedComboBox = new QComboBox();
borrowedComboBox->addItem('否');
borrowedComboBox->addItem('是');
borrowedComboBox->setCurrentText(query.value(6).toString());
QLabel *borrowerIdLabel = new QLabel('借书证号:');
borrowerIdEdit = new QLineEdit(query.value(7).toString());

//布局
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(bookNameLabel, 0, 0);
layout->addWidget(bookNameEdit, 0, 1);
layout->addWidget(authorLabel, 1, 0);
layout->addWidget(authorEdit, 1, 1);
layout->addWidget(publisherLabel, 2, 0);
layout->addWidget(publisherEdit, 2, 1);
layout->addWidget(publishDateLabel, 3, 0);
layout->addWidget(publishDateEdit, 3, 1);
layout->addWidget(priceLabel, 4, 0);
layout->addWidget(priceEdit, 4, 1);
layout->addWidget(borrowedLabel, 5, 0);
layout->addWidget(borrowedComboBox, 5, 1);
layout->addWidget(borrowerIdLabel, 6, 0);
layout->addWidget(borrowerIdEdit, 6, 1);

//添加按钮
QPushButton *okButton = new QPushButton('确定', this);
connect(okButton, &QPushButton::clicked, this, [=](){
    accept();
});
QPushButton *cancelButton = new QPushButton('取消', this);
connect(cancelButton, &QPushButton::clicked, this, [=](){
    reject();
});
QHBoxLayout *buttonLayout = new QHBoxLayout();
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(cancelButton);
layout->addLayout(buttonLayout, 7, 0, 1, 2);

}

QString EditDialog::getBookName() { return bookNameEdit->text(); }

QString EditDialog::getAuthor() { return authorEdit->text(); }

QString EditDialog::getPublisher() { return publisherEdit->text(); }

QString EditDialog::getPublishDate() { return publishDateEdit->text(); }

QString EditDialog::getPrice() { return priceEdit->text(); }

QString EditDialog::getBorrowed() { return borrowedComboBox->currentText(); }

QString EditDialog::getBorrowerId() { return borrowerIdEdit->text();

Qt QTableWidget 单击按钮编辑数据并更新数据库

原文地址: https://www.cveoy.top/t/topic/oPfr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录