crossplatform.ru

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

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
  опции профиля:
сообщение 5.7.2017, 22:15
Сообщение #2


Участник
**

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

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




Репутация:   0  


Цитата(lanz @ 5.7.2017, 17:18) *
Цитата(JohnZ @ 5.7.2017, 15:07)
... или здесь подразумевается множеств-ное наследование ?
https://en.wikipedia.org/wiki/Composition_over_inheritance

Неа, не мой случай.
Или моя твоя не понялЪ или наоборот :)
Они-ж и так в одной цепи наследования, с добавлением / изм-ем функционала, и я ещё им свой навешиваю ...

Цитата
Цитата(JohnZ @ 5.7.2017, 15:07)
выставить _предопределённые_ признаки
в пропертях и опрашивать их из С-шного кода в проксе ?
Да, например так.

!!!

Цитата
Цитата(JohnZ @ 5.7.2017, 15:07)
А как СВОЮ модель "объяснить" скрипту ?
Если своя модель наследует от какой-либо модели (QAbstractXxxModel) то она и так QObject. Если нет, то это хороший повод ее отнаследовать, т.к. можно будет использовать со стандартными вью/проксями и т.п.


Раскрывающийся текст

class fpTableModel : public QSqlTableModel
{
// Q_OBJECT

public:
fpTableModel(fpTForma * parent = 0);
~fpTableModel();

Qt::ItemFlags flags(const QModelIndex &index) const;
// QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;

void refresh() { ;}
bool initModel();
void setTable (int TIdd);
void setFilter(const QString & filter);

void beginInsertRow(const QModelIndex &parent, int row);
void endInsertRow();

protected:

QSqlRecord mRecord; // in Model from Query
QSqlRecord tRecord; // in original Table

private:

fpTForma *fParent;

friend class fpTForma;
};

Если снять rem с Q_OBJECT, НЕ компилится, ошибок на 2 экрана.
Соответственно и скрипту необъяснимо :(
Я вроде-бы уже когда-то об этой проблеме спрашивал, так и не решилось, оставил AS IS ... :(

Цитата
Цитата(JohnZ @ 5.7.2017, 15:07)
показать их надо одной строкой БЕЗ нулевых значений
в сишной data проверять на 0?

Дык Тогда нет смысла в скриптовой data() ?!
В том и смысл, чтобы формирование "уникальных" колонок отдать скрипту.
Т.е. "спастись" от кучи с-шных моделей.
Нужна гибкость и оч-чень желательно не потерять много в скорости !
В сишной data проверить флажок-признак в пропертях, надо-ли вызывать скриптовую data.
Но ведь ей опять-таки понадовится моделька ... :( Или можно как-ни-ить обойтись ?

Сообщение отредактировал JohnZ - 5.7.2017, 22:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 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


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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 17.4.2025, 5:03