data() MVC из скрипта возможно ?, Прицепить data() MVC к скрипту !? |
Здравствуйте, гость ( Вход | Регистрация )
data() MVC из скрипта возможно ?, Прицепить data() MVC к скрипту !? |
JohnZ |
3.7.2017, 17:30
Сообщение
#1
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Со старта прошу не пинать за то что ( возможно !) не в том разделе задаю вопрос, т.к. вероятнее всего это из раздела MVC.
Задача следующая, - есть класс формы с указателем на её модельку ... Раскрывающийся текст class fpTForma : public QDialog { Q_OBJECT public: Q_INVOKABLE fpTForma(int id, MainWindow *parent = 0, Qt::WindowFlags f = 0); ~fpTForma(); public slots: Q_INVOKABLE bool initForm(int fpCmd = 0); Q_INVOKABLE MainWindow *getParent() { return mParent; } Q_INVOKABLE int getCurRow() { return curIndex.isValid() ? curIndex.row() : -1; } Q_INVOKABLE QVariant getCurValue(int col); Q_INVOKABLE QVariant getCurValue(const QString & name); Q_INVOKABLE bool match(int col, QVariant value); Q_INVOKABLE bool match2(int col, int col1, QVariant value, QVariant value1); Q_INVOKABLE void refresh() { model->select(); } Q_INVOKABLE void setSort(int colnum, int order, bool sel = false); Q_INVOKABLE int exec(); // .... etc protected slots: void closeEvent(QCloseEvent *event); void keyPressEvent (QKeyEvent *event); void setCurrentModelIndex(const QModelIndex &idx); // .... etc protected: QScriptEngine *engine; // ссылка на интерпретатор скрипта. MainWindow *mParent; QTableView *viewChild; // QTableView на этой форме fpTableModel *model; // Форма работает с Таблицей !!! QModelIndex curIndex; QSqlRecord curRecord; QDataWidgetMapper *dataMapper; // .... etc }; Он фактически выполняет роль Контроллера в MVC. В скрипте эти объекты видны как frmXXX. Задача состоит в том, что-бы из скрипта "прицепить" к его модели ф-цию data() для подмены колонок в View !? Вроде-бы когда-то видел такое в и-нете, но не уверен. Возможно-ли такое сделать ? Подскажите PLZ ... Сообщение отредактировал JohnZ - 3.7.2017, 17:38 |
|
|
JohnZ |
6.7.2017, 12:06
Сообщение
#2
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Цитата(JohnZ @ 5.7.2017, 22:15) Если снять rem с Q_OBJECT, НЕ компилится, ошибок на 2 экрана. Надо с этим разобраться, кидай сюда хоть что за ошибки. Раскрывающийся текст tmp/obj/fpquerymodel.o: In function `fpQueryModel': /home/pi/Work/finpro/fpquerymodel.cpp:15: undefined reference to `vtable for fpQueryModel' tmp/obj/fpquerymodel.o: In function `~fpQueryModel': /home/pi/Work/finpro/fpquerymodel.cpp:19: undefined reference to `vtable for fpQueryModel' tmp/obj/fpquerymodel.o: In function `fpQueryModel::tr(char const*, char const*)': /home/pi/Work/finpro/fpmodels.h:33: undefined reference to `fpQueryModel::staticMetaObject' tmp/obj/fptablemodel.o: In function `fpTableModel': /home/pi/Work/finpro/fptablemodel.cpp:15: undefined reference to `vtable for fpTableModel' tmp/obj/fptablemodel.o: In function `~fpTableModel': /home/pi/Work/finpro/fptablemodel.cpp:19: undefined reference to `vtable for fpTableModel' tmp/obj/fprtablemodel.o: In function `fpRTableModel': /home/pi/Work/finpro/fprtablemodel.cpp:17: undefined reference to `vtable for fpRTableModel' tmp/obj/fprtablemodel.o: In function `~fpRTableModel': /home/pi/Work/finpro/fprtablemodel.cpp:21: undefined reference to `vtable for fpRTableModel' collect2: ld returned 1 exit status ---------------------------- См. "прицеп" ... Раньше было поболее ... Это уже при линковке. Чё с этим делать хз ... А если заремить Q_OBJECT, линкуется без проблем. Цитата Цитата(JohnZ @ 5.7.2017, 22:15) Дык Тогда нет смысла в скриптовой data() ?! В том и смысл, чтобы формирование "уникальных" колонок отдать скрипту. Т.е. "спастись" от кучи с-шных моделей. Нужна гибкость и оч-чень желательно не потерять много в скорости ! А в чем проблема с кучей сишных моделей? Дык что-бы иметь одну универсальную, на все случаи ... Цитата На самом деле нет разницы где писать - и там и там код придется как то поддерживать и обновлять. Дык скриптовую поддержку можно отдать "наружу" Как в ERP-системах. Цитата Более того, как ты думаешь насколько часто будет менятся логика убирания лишних нулей? Ни разу. В чём подвох ? Сообщение отредактировал JohnZ - 6.7.2017, 12:16 |
|
|
Текстовая версия | Сейчас: 25.4.2024, 21:58 |