Поиск в модели из скрипта, по коду ШК |
Здравствуйте, гость ( Вход | Регистрация )
Поиск в модели из скрипта, по коду ШК |
JohnZ |
4.5.2017, 10:58
Сообщение
#1
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Всем здравия !
Есть такой класс объекта... Раскрывающийся текст class fpForma : public QDialog { Q_OBJECT public: fpForma(int id, MainWindow *parent = 0, Qt::WindowFlags f = 0); ~fpForma(); bool initForm(int Cmd = 0); public slots: void save(); void submit(); private: QSqlTableModel *model; QTableView *view; QModelIndex curIndex; QSqlRecord curRecord; }; И его класс модели, почти стандартный ... Раскрывающийся текст class fpTableModel : public QSqlTableModel { public: fpTableModel(QObject * parent = 0, QSqlDatabase db = QSqlDatabase()); ~fpTableModel(); QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; void setTable ( const QString & tableName ); int columnCount(const QModelIndex &parent = QModelIndex()) const; void setDefFields(QStringList & df); private: int colsInList, colsInForm; QStringList DefFields; }; Таблица, обслуживаемая этим объектом имеет примерно такую структуру
Выглядит это примерно как на картинке в прицепе ... В скрипте загружаем и инициализируем драйвер сканера ШК
Функцмя скрипта на которую прицеплен сканер ШК
Код со сканера в ф-цию приходит ! Код ШК является невидимой колонкой ! Сам объект fpForma в скрипте виден как frm579 ... И вотЪ теперь вопрос, - как в объекте fpForma организовать поиск и позиционирование на нужную строку ? Ведь доступа к модели из скрипта у меня нет ?! :-( Заранее благодарен за помощь !!! Сообщение отредактировал JohnZ - 4.5.2017, 11:12 |
|
|
JohnZ |
8.5.2017, 15:43
Сообщение
#2
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Народ, аууууу Неужели никаких идей ?
Нарыл в нете более-менее подходящий вариант с использованием QModelIndexList QAbstractItemModel::match ( .... ) const но как ей "объяснить" в какой колонке искать не знаю И кроме того, как пишут на prog.ru если юзер не скролил до конца таблицы, т.е. данные не кешированы полностью, match практически беЗполезен По-крайней мере для куте 4.3 так было ... Сообщение отредактировал JohnZ - 8.5.2017, 15:58 |
|
|
JohnZ |
19.5.2017, 12:26
Сообщение
#3
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Решилось с пом-ю prog.org.ru
Раскрывающийся текст bool fpQForma::match(int col, QVariant value, bool seek) { QModelIndex idx; int row_count = model->rowCount(); for(int i = 0;i < row_count;i++) { idx = model->index(i, col); if( model->data(idx) == value) { if (seek) viewChild->setCurrentIndex(idx); return(true); } } return(false); } Не самое лучшее решение, но работает ! На 2-3 тыс записей ищет довольно быстро ... |
|
|
Текстовая версия | Сейчас: 28.11.2024, 1:11 |