Название: Считать текст из QLineEdit'ов и записать в соотв. поля таблицы
Отправлено: codenameRazuka от Ноябрь 17, 2015, 23:21
В общем, имеется класс, который используется для представления меню ввода данных в таблицу БД. Число столбцов заранее неизвестно. Необходимо, при нажатии кнопки "Принять" внести введённые в поля ввода пользователем данные в таблицу базы данных. Каким образом разумнее всего было бы это сделать? #include <QDialog> #include <QLineEdit> #include <QSqlTableModel>
class InsertRecordDialog: public QDialog { Q_OBJECT
private: QLineEdit **columns; QPushButton *admitButton; QPushButton *cancelButton;
public: InsertRecordDialog(QWidget* parent, QSqlQueryModel* model);
private slots: void admit();
}; #include "insertrecorddialog.h" #include <QLabel> #include <QHBoxLayout> #include <QVBoxLayout> #include <QPushButton>
InsertRecordDialog::InsertRecordDialog(QWidget* parent = 0, QSqlQueryModel* model = 0) : QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint) { int n = model->columnCount();
columns = new QLineEdit*[n]; for (int i = 0; i < n; i++) { columns[i]=new QLineEdit(this); }
admitButton = new QPushButton(QObject::tr("Принять")); cancelButton = new QPushButton(QObject::tr("Отмена"));
QObject::connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
QLabel **labels = new QLabel*[n]; for (int i = 0; i < n; i++) { labels[i]=new QLabel(this); labels[i]->setText(model->headerData(i,Qt::Horizontal).toString()); }
QVBoxLayout *mainLayout = new QVBoxLayout;
QVBoxLayout *leftLayout = new QVBoxLayout; for (int i = 0; i < n; i++) { leftLayout->addWidget(labels[i]); }
QVBoxLayout *rightLayout = new QVBoxLayout; for (int i = 0; i < n; i++) { rightLayout->addWidget(columns[i]); }
QHBoxLayout *topLayout = new QHBoxLayout;
topLayout->addLayout(leftLayout); topLayout->addLayout(rightLayout);
QHBoxLayout *bottomLayout = new QHBoxLayout; bottomLayout->addWidget(admitButton); bottomLayout->addWidget(cancelButton);
mainLayout->addLayout(topLayout); mainLayout->addLayout(bottomLayout);
this->setLayout(mainLayout);
}
Название: Re: Считать текст из QLineEdit'ов и записать в соотв. поля таблицы
Отправлено: gil9red от Ноябрь 18, 2015, 09:21
Эммм, не в тему, а для чего использовать матрицу QLineEdit, если есть таблицы (QTableWidget, QTableView)? А QTableView может с sql-моделями работать (http://doc.qt.io/qt-4.8/sql-model.html)...
Название: Re: Считать текст из QLineEdit'ов и записать в соотв. поля таблицы
Отправлено: gil9red от Ноябрь 18, 2015, 09:31
Посмотрите QSqlQueryModel::setQuery и QSqlQuery (http://doc.qt.io/qt-5/qsqlquery.html#details) Пример вставки: C++ (Qt) QSqlQuery query; query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)"); query.bindValue(":id", 1001); query.bindValue(":forename", "Bart"); query.bindValue(":surname", "Simpson"); query.exec();
|