Кстати у меня еще и предупреждение выходит
:-1: предупреждение: «r:\Programs\arduino-1.8.2\hardware\tools\avr\bin\avr-gcc.exe» используется qmake, но «C:\Qt\Qt5.9.1\Tools\mingw530_32\bin\gcc.exe» задан в комплекте.
Обновите комплект или выберите подходящей для вашей целевой платформы mkspec для qmake.
Так что я думаю комплект как раз важен.
Кто-нибудь подскажет, как это исправить?
С комплектом понятно.
А откуда компилятор у меня добавляет опции -c -fno-keep-inline-dllexport -pipe?
Я эти опции вижу только в *.conf файлах самой Qt
В проекте CONFIG -= qt присутствует
А нельзя ли попросить вашего Qt account manager написать статью по мотивам вопросов в обсуждении (хотя бы кратко). А то может оказаться, что ваша позиция в чем-то может сильно отличаться от его мнения (офф. позиции). А многие будут ссылаться на вашу статью и комментарии как на истину, так сказать, в последней инстанции, что будет вводить в заблуждение.
В интернете очень много обсуждений лицензионных моментов Qt, но нигде нет ссылок на кого-то, кто обладает информацией изнутри.
Хочется ясности в вопросе лицензирования…
GUI на десктопе. Ардуино (микроконтроллер), либо, например. датчик температуры, плата и реле, с которыми взаимодействует Qt GUI приложение с помощью протокола, например, через Com-порт (QSerialPort).
Ведь все эти платы, датчик и т.п. попадают под термин device и получается что такое приложение можно написать только при покупке Qt for Device Creation и никак не с Oper source лицензией.
Вот, как пример: https://github.com/Kar1o/Arduino и таких примеров уйма…
А если программа на Qt предназначена для взаимодействия с каким-либо «открытым» устройством (Arduino, например, и пр.), то необходимо покупать лицензию Qt for Device Creation? Ведь ардуино может выступать в роли датчиков/исполнительного устройства и тогда попадает под термин device.
И я подумал что очередные пляски с бубном как с QSqlTableModel мне не нужны.
Это вы про
QSqlTableModel может сохранять данные в базу. Странно что на форме раздельное сохранение данных для таблицы и простых полей. QSqlTableModel иногда работает с ошибками. Потом, у него немного ограниченный функционал. Поэтому вы можете плюнуть и воспользоваться QSqlQueryModel. Который уже ничего не сохраняет, но и ограничений у него нет. В этом случае таблица будет только для чтения.
?
Если да, то я опять же написал EditSqlQueryModel
С которой можно делать так…
contentModel = new EditSqlQueryModel(db, this);
contentModel->setEditStrategy(EditSqlQueryModel::OnManualSubmit);
contentModel->showDeleted(false);
contentModel->setQuery("SELECT "
"a.recordid, "
"a.productionid, "
"a.productionclassid, "
"d.name as productionclassname, "
"FROM foamcontourproductioncontent a "
"left join productionclass as d on a.productionclassid = d.recordid "
"where a.foamcontourproductionid = " + QString::number(m_recordId) + " "
"order by a.recordid;");
contentModel->setTable("foam.productioncontent");
contentModel->init();
EditSqlQueryModel::FieldMap fMap;
QSqlRecord rec;
rec = contentModel->record();
fMap.insert("recordid", rec.field("recordid"));
fMap.insert("productionid", rec.field("productionid"));
contentModel->setUpdatableFields(fMap);
Такая реализация по мотивам Visual FoxPro.
Она правда имеет мало функционала по сравнению с CursorAdapter из VFP, но мне хватает.
Ладно, пусть это будет делом вкуса, так сказать.
Но…
То без изменения QSqlQueryModel, в качестве модели комбобокса, выдаст просто список «id». А человекочитаемое значение не будет видно
Это же явное заблуждение, которое и привело вас к созданию собственной модели.
Есть же void setModelColumn(int visibleColumn), которое и задает какой столбец выводить пользователю.
Вот вы заполняете комбобокс пятью строчками кода плюс незнаю что там в модели. А я это делаю одной строкой. Когда комбобоксов от 10-и в программе. Есть над чем задуматься.
Я могу заполнять и одной строчкой кода, если все остальное используется по умолчанию. А модель самая обычная, самое главное чтобы там были столбцы типа int для ключа БД и QString для отображения.
А если таких виджетов много, то можно и фабрику под это дело использовать. Это уже вопрос уровня абстракций.
QDataWidgetMapper и должен работать с тем, что показывается пользователю. Никто же не делает несколько пунктов с одинаковым содержимым 'Пункт1, Пункт1', или я смысл не уловил…
И он у меня работает и глюков пока не замечал.
Я в свое время написал для себя класс выпадающего списка для работы с данными пита [id,text]
comboBox1 = new BaseKeyComboBox();
comboBox1->setModel(sourceModel); //модель примерно такая "SELECT RecordID, DisplayText FROM MyCatalog;"
comboBox1->setModelColumn(1); // Колонка для отображения текста
comboBox1->setKeyColumn(0); // Колонка для ключа ID ТОЛЬКО int!!!!!!!
comboBox1->setEditable(false);
// mapper - это QDataWidgetMapper
// Подключается как обычно
mapper->addMapping(comboBox1, mainModel->fieldIndex("referemceid"));
Причем я не понял зачем делать модель специально для этого случая.
У меня можно подцепить любую.
И я не увидел, он у вас с QDataWidgetMapper умеет работать?
CREATE USER 'zbx_monitor' IDENTIFIED BY '';
Кстати у меня еще и предупреждение выходит
:-1: предупреждение: «r:\Programs\arduino-1.8.2\hardware\tools\avr\bin\avr-gcc.exe» используется qmake, но «C:\Qt\Qt5.9.1\Tools\mingw530_32\bin\gcc.exe» задан в комплекте.
Обновите комплект или выберите подходящей для вашей целевой платформы mkspec для qmake.
Так что я думаю комплект как раз важен.
Кто-нибудь подскажет, как это исправить?
А откуда компилятор у меня добавляет опции -c -fno-keep-inline-dllexport -pipe?
Я эти опции вижу только в *.conf файлах самой Qt
В проекте CONFIG -= qt присутствует
Получил ошибку
14:23:12: Запускается: «C:\Qt\Qt5.9.1\Tools\mingw530_32\bin\mingw32-make.exe»
C:/Qt/Qt5.9.1/Tools/mingw530_32/bin/mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory 'Z:/Coding/qt/arduino_template'
r:/Programs/arduino-1.8.2/hardware/tools/avr/bin/avr-gcc.exe -c -fno-keep-inline-dllexport -pipe -c -g -Os -w -ffunction-sections -fdata-sections -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -O2 -Wextra -Wall -W -DUNICODE -DQT_NEEDS_QMAIN -I. -Isrc -Ir:\Programs\arduino-1.8.2\hardware\arduino\avr\cores\arduino -Ir:\Programs\arduino-1.8.2\hardware\arduino\avr\variants\standard -Ir:\Programs\arduino-1.8.2\hardware\arduino\avr\libraries -I/usr/avr/include -IC:\Qt\Qt5.9.1\5.9.1\mingw53_32\mkspecs\win32-g++ -o release\hooks.o r:\Programs\arduino-1.8.2\hardware\arduino\avr\cores\arduino\hooks.c
avr-gcc.exe: error: command line option '-fno-keep-inline-dllexport' is not supported by this configuration
И по-моему вы пропустили этап
Не увидел, как его настраивать.
В интернете очень много обсуждений лицензионных моментов Qt, но нигде нет ссылок на кого-то, кто обладает информацией изнутри.
Хочется ясности в вопросе лицензирования…
Ведь все эти платы, датчик и т.п. попадают под термин device и получается что такое приложение можно написать только при покупке Qt for Device Creation и никак не с Oper source лицензией.
Вот, как пример: https://github.com/Kar1o/Arduino и таких примеров уйма…
Это вы про
?
Если да, то я опять же написал EditSqlQueryModel
С которой можно делать так…
Такая реализация по мотивам Visual FoxPro.
Она правда имеет мало функционала по сравнению с CursorAdapter из VFP, но мне хватает.
Вы по-моему не с той стороны подошли к проблеме.
которое и позволяет QDataWidgetMapper выполнять свою работу.
И, да… У меня записывается в базу именно id
В первом примере кода это видно
В принципе вы можете найти полную реализацию моего кода, она очень простая.
Но…
Это же явное заблуждение, которое и привело вас к созданию собственной модели.
Есть же void setModelColumn(int visibleColumn), которое и задает какой столбец выводить пользователю.
Я могу заполнять и одной строчкой кода, если все остальное используется по умолчанию. А модель самая обычная, самое главное чтобы там были столбцы типа int для ключа БД и QString для отображения.
А если таких виджетов много, то можно и фабрику под это дело использовать. Это уже вопрос уровня абстракций.
QDataWidgetMapper и должен работать с тем, что показывается пользователю. Никто же не делает несколько пунктов с одинаковым содержимым 'Пункт1, Пункт1', или я смысл не уловил…
И он у меня работает и глюков пока не замечал.
Причем я не понял зачем делать модель специально для этого случая.
У меня можно подцепить любую.
И я не увидел, он у вас с QDataWidgetMapper умеет работать?
У меня Ippon-ы через него работают.
Или он чем-то не устроил?