Size: a a a

2020 December 09

ИФ

Имя Фамилия... in Qt
Нужна помощь с обновлением модели в QML

Собственно сама модель реализована на C++ в виде класса который наследует и переопределяет необходимые для QML методы от QSqlRelationalTableModel -  roleNames, data, setData, flags.
В моем случае я переопределил ещё и метод select для заполнения контейнера с названиями ролей, чтобы они были равны названиям столбцов в таблице самой БД (просто это удобно использовать в QML и не нужно вручную добавлять роли).

EditStrategy у всех экземпляров TableModel установлено OnFieldChange.

Теперь собственно сама проблема. При вставке записи в таблицу методом insertRecord, QML представление выводит ошибку Invalid property name 'model.roleName' (где roleName это соответственно название роли в таблице, например description и т.п).
У меня в голове накопилась целая гора мыслей и предположений почему возникает эта ошибка, но лучше я послушаю что скажут другие программисты)
источник

M

Mr.Mait in Qt
A D
select * from mytable where date >= '2020-10-09' and date <= '2020-10-10'
Сори, не на те цифры смотрел :)
источник

AD

Android Developer in Qt
Mr.Mait
Можно начать копать в сторону between
ясно хорошо.
источник

AD

Android Developer in Qt
Mr.Mait
Можно начать копать в сторону between
в интернете есть пример?
источник

m

mefest in Qt
Android Developer
в интернете есть пример?
в интернете куча примеров
источник

S

Sofia in Qt
Есть какой-то способ продлить textField до конца окна?     Row {
       spacing: 15
       Button {
           text: "scans"
       }
       TextField {
           text: "scans"
       }

   }
источник

AS

Anton Sheverda in Qt
Никак не могу разобраться с QSqlQuery под Win10 и это важно.
Почему-то не могу получить данные с таблицы которая имеет тип данных bool. QSqlQuery просто пишет что она не существует. С помощью QSqlRecord посмотрел какие колонки видит Qt5. Все кроме нужной. На линуксе никаких проблем нету, все колонки отрабатывают.  Может кто понимает почему так?
источник

M

Mr.Mait in Qt
Sofia
Есть какой-то способ продлить textField до конца окна?     Row {
       spacing: 15
       Button {
           text: "scans"
       }
       TextField {
           text: "scans"
       }

   }
Пробовала для Row  ?
anchors.left: parent.left
anchors.right: parent.right
источник

AS

Anatoly Shirokov in Qt
Anton Sheverda
Никак не могу разобраться с QSqlQuery под Win10 и это важно.
Почему-то не могу получить данные с таблицы которая имеет тип данных bool. QSqlQuery просто пишет что она не существует. С помощью QSqlRecord посмотрел какие колонки видит Qt5. Все кроме нужной. На линуксе никаких проблем нету, все колонки отрабатывают.  Может кто понимает почему так?
Опять будем гадать?
источник

AS

Anton Sheverda in Qt
Anatoly Shirokov
Опять будем гадать?
Так я сам не понимаю что происходит. На win 10, ошибку выдает "Колонка не существует". На линуксе тот же код отрабатывает как надо.
источник

m

mefest in Qt
Mr.Mait
Пробовала для Row  ?
anchors.left: parent.left
anchors.right: parent.right
для Row разве легально использовать anchors?
источник

AS

Anatoly Shirokov in Qt
mefest
для Row разве легально использовать anchors?
да, это для RowLayout нелегально
источник

m

mefest in Qt
Sofia
Есть какой-то способ продлить textField до конца окна?     Row {
       spacing: 15
       Button {
           text: "scans"
       }
       TextField {
           text: "scans"
       }

   }
для Row не знаю. Сам обычно использую RowLayout там есть свойство fillWidth
источник

AS

Anatoly Shirokov in Qt
Anton Sheverda
Так я сам не понимаю что происходит. На win 10, ошибку выдает "Колонка не существует". На линуксе тот же код отрабатывает как надо.
а как ты для себя доказываешь, что столбец существует под Windows 10?
источник

S

Sofia in Qt
mefest
для Row не знаю. Сам обычно использую RowLayout там есть свойство fillWidth
Я как раз хотела сделать просто для row
источник

S

Sofia in Qt
Mr.Mait
Пробовала для Row  ?
anchors.left: parent.left
anchors.right: parent.right
да, виснет и ничего не считает, проблую задать размеры всем предыдущим элементам
источник

S

Sofia in Qt
mefest
для Row разве легально использовать anchors?
а я не использую  ещё, я как раз думаю  как их правильно применить
источник

AS

Anatoly Shirokov in Qt
Sofia
да, виснет и ничего не считает, проблую задать размеры всем предыдущим элементам
anchors.left - наверное лишнее, поскольку слева же еще контрол
источник

m

mefest in Qt
Sofia
Я как раз хотела сделать просто для row
можно наверное считать ширину самому, хз по мне так проще либо без Row и на anchors либо на RowLayout
если найдешь ответ для Row то отпиши
источник

AS

Anton Sheverda in Qt
Anatoly Shirokov
а как ты для себя доказываешь, что столбец существует под Windows 10?
База данных в которой есть схема с колонками. Все колонки я прекрасно вижу в dbeaver, так и в psql.
Когда я хочу в qt получить список колонок, я могу использовать код.

QSqlRecord localRecord = test.record();
   for (int var = 0; var < localRecord.count(); ++var) {
       QString fieldName = localRecord.fieldName(var);
       qDebug() << fieldName;
   }

В Линукс показывает 10 колонок, в win 10 показывает 9 колонок. При попытке получения  единичных данных с нужной колонки, в win 10 пишет ошибку "Колонка не существует", в Линукс Fedora 29. Все работает нормально. Так же psql отрабатывает как надо.
источник