Я разрабатываю основной пользовательский интерфейс с несколькими полями.Чтобы уменьшить проблему, я создал небольшое минимальное приложение с 5 столбцами: name, image, dataDatabase, dateTime иordinNumber.
У меня есть MainWindow с QTableView, как только я щелкаю правой кнопкой мыши внутри QTableView иAddItemDialog открывается с:
1) nameLineEdit
2) ImLineEdit
3) imageLineEdit
4) dateTimeEdit
5) numLineEdit
У меня проблема в том, что я не могу найти способ принять 5) numLineEdit через AddItemDialog , когда число отрицательное. В настоящее времяэто только сохраняет положительные числа.Как обработать это исключение?
Я прочитал официальный документ , но я не мог понять.Однако всегда из этого официального источника кажется, что отрицательное число должно интерпретироваться как значение «без ограничений».Объяснение было коротким и не дало никакого полезного небольшого примера, поэтому я все еще не уверен, как действовать.
Я включаю наиболее важные части нижеприведенного приложения в соответствующее описание процедуры, которой я следовал:
Я создал Предмет с полями item.h :
class Item
{
public:
Item(const double dateTime,
const QString &name = "", const QString &image = "",
int num, const QByteArray &imagesData = QByteArray());
QString name() const { return mName; }
QString image() const { return mImage; }
QByteArray imagesData() const { return mImagesData; }
double dateTime() const { return mDateTime; }
int num() const { return mNumberCoord; }
private:
QString mName;
QString mImage;
QByteArray mImagesData;
double mDateTime;
int mNumberCoord
};
и связанным с ним item.cpp
Item::Item(const double dateTime, int num,
const QString &name, const QString &image, int num,
const QByteArray &imagesData) :
mName(name),
mImage(image),
mImagesData(imagesData),
mDateTime(dateTime),
mNumberCoord(num)
{
}
Я создал таблицу database.h , которая будет содержать следующие параметры:
class dataBase : public QObject
{
Q_OBJECT
public:
explicit dataBase(QObject *parent = nullptr);
bool inizializationDataBase(const QString &nameDataBase);
bool configureDataBase();
QString getError() const { return mError; }
bool addItem(const Item &item);
private:
QSqlDatabase mDatabase;
QString mError;
};
И связанный с ним файл database.cpp - Ятолько включая самый важный фрагмент кода для этого файла:
#define CREATE_TABLE \
" CREATE TABLE IF NOT EXISTS Fish_Table" \
" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL" \
", name TEXT NOT NULL" \
", image TEXT NOT NULL" \
", dataDataBase BLOB NOT NULL" \
", dateTime DOUBLE NOT NULL" \
", num INTEGER NOT NULL)"
dataBase::dataBase(QObject *parent) : QObject(parent)
{
}
bool dataBase::addItem(const Item &item) {
QSqlQuery q;
q.prepare("INSERT INTO Fish_Table (name, image, dataDatabase, dateTime, num) VALUES (?,?,?,?,?)");
q.addBindValue(item.name());
q.addBindValue(item.image());
q.addBindValue(item.imagesData());
q.addBindValue(item.dateTime());
q.addBindValue(item.num());
bool ok = q.exec();
if (!ok) {
mError = q.lastError().text();
}
return ok;
}
и, наконец, AddItemDialog.cpp , который содержит поля, которые я пытаюсь передать в QTableView MainWindow.
AddItemDialog.cpp
void AddItemDialog::on_buttonBox_accepted()
{
QFile dataBase(ui->imageLineEdit->text());
if (!dataBase.open(QIODevice::ReadOnly)) {
QMessageBox::critical(this, "Error", dataBase.errorString());
return;
}
mItem = Item(ui->dateTimeEdit->dateTime(),
ui->nameLineEdit->text(),
ui->ImLineEdit->text(),
ui->numLineEdit->text(),
dataBase.readAll());
dataBase.close();
accept();
}
Я ожидаю сохранить положительные или отрицательные числа в QTableView, но на данный момент я могу сохранять только положительные числа.Как обработать это исключение?