crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 5.7.2017, 11:09
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


См. приложение.
Цитата
Дык по-любому все объекты получатся проксируемыми, или я чего-то не догоняю ... :(

Только те, у которых используется прокся :)
Цитата
... и ХТО такой SRP ? Просвети plz, если можно ссыль ... ?

Single Responsibility Principle из SOLID
https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
Цитата
Вот если-бы они "росли"

Prefer composition to inheritance :)
Цитата
Дык какая колонка чего должна показать и должна "разобраться" data() !? ... или я тебя не правильно понял :-(

В ScripProxy можно завести другие проперти, которые позволят фильтровать уже в ScripProxy::data, не дергая скрипт, например если скрипт умеет обрабатывать только 1 колонку, то можно для остальных и не вызывать коллбэк.
Цитата
LANZ - а можно по-подробнее сей момент "разжевать" ???

Тот же пример что выше - if по номеру колонки можно сделать в скрипте, тогда скрипт будет вызываться для всех колонок. А можно сделать в ScriptProxy::data и сравнивать с вынесенным property. Тогда скрипт будет вызываться только для одной колонки.
Цитата
и здесь, и если можно псевдо-кодом ?

Вроде того:
function data(row, col, model) { return model.data() }

args << engine->newQObject(sourceModel())

Прикрепленные файлы
Прикрепленный файл  proxies.tar.gz ( 1,19 килобайт ) Кол-во скачиваний: 421
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- JohnZ   data() MVC из скрипта возможно ?   3.7.2017, 17:30
- - lanz   Плюсовые объекты из скрипта менять не получится км...   3.7.2017, 18:39
- - JohnZ   Цитата(lanz @ 3.7.2017, 18:39) Плюсовые о...   4.7.2017, 11:36
- - lanz   Цитата(JohnZ @ 4.7.2017, 11:36) А сама fp...   4.7.2017, 12:17
- - JohnZ   Цитата(lanz @ 4.7.2017, 12:17) Цитата(Joh...   4.7.2017, 13:35
- - lanz   См. приложение. ЦитатаДык по-любому все объекты по...   5.7.2017, 11:09
- - JohnZ   Цитата(lanz @ 5.7.2017, 11:09) См. прилож...   5.7.2017, 15:07
- - lanz   Цитата(JohnZ @ 5.7.2017, 15:07) ... или з...   5.7.2017, 17:18
- - JohnZ   Цитата(lanz @ 5.7.2017, 17:18) Цитата(Joh...   5.7.2017, 22:15
- - lanz   Цитата(JohnZ @ 5.7.2017, 22:15) Если снят...   6.7.2017, 9:21
- - JohnZ   Цитата(lanz @ 6.7.2017, 9:21) Цитата(John...   6.7.2017, 12:06
- - lanz   Цитата(JohnZ @ 6.7.2017, 12:06) Это уже п...   6.7.2017, 13:16
- - JohnZ   Цитата(lanz @ 6.7.2017, 13:16) Цитата(Joh...   6.7.2017, 14:25
- - lanz   Цитата(JohnZ @ 6.7.2017, 14:25) Дык тепер...   6.7.2017, 17:20
- - JohnZ   Вот уже почти и добрались до решения проблемы Ц...   7.7.2017, 11:27
- - lanz   Цитата(JohnZ @ 7.7.2017, 11:27) И как в п...   7.7.2017, 13:49
- - JohnZ   Погодь lanz, не убегай А какая у тебя QT-я ? У мн...   7.7.2017, 17:34
- - lanz   Цитата(JohnZ @ 7.7.2017, 17:34) У тебя ли...   7.7.2017, 18:36
- - JohnZ   Цитата(lanz @ 7.7.2017, 18:36) Цитата(Joh...   9.7.2017, 19:56
- - lanz   Цитата(JohnZ @ 9.7.2017, 19:56) А так мож...   9.7.2017, 23:56
- - JohnZ   Lanz, а не подскажешь как можно передать в скрипто...   14.7.2017, 12:24
- - lanz   Было ИТТ, ну! engine->newVariant(inde...   14.7.2017, 12:41
- - JohnZ   Помнишь фильм "Напарник" Л.Гайдая ? - Р...   14.7.2017, 12:50


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 2:35