crossplatform.ru

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


  Ответ в Нахождение нужного элемента в QListView
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
AD Дата 14.11.2008, 17:28
 
Цитата(Litkevich Yuriy @ 14.11.2008, 17:00) *
AD, что это за слот? как туда попадаешь

Вот так туда попадаю.
connect(lineFindDB, SIGNAL(textEdited(const QString&)), this, SLOT(findLeftSN(const QString&)));



int cool = 100;


Если по-русски сказать, то при изменении текста в эдит поле, куда вводится серийный, который хотят найти.
Litkevich Yuriy Дата 14.11.2008, 17:00
  AD, что это за слот? как туда попадаешь
AD Дата 14.11.2008, 16:53
  На англоязычном форуме подсказали правильное решение. :) Данная штука решается с помощью
QModelIndexList QAbstractItemModel::match ( const QModelIndex & start, int role, const QVariant & value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap ) ) const [virtual]

Вот описание слота, который решает мою проблему:
/// Поиск в левом списке номера, часть (или он весь) которого отражена в new_SN
void LicenceBuilder::findLeftSN(const QString& new_SN)
{
    if(new_SN.isEmpty()) return;

    QSqlTableModel model;
    model.setTable("DeviceList");
    model.select();
    QStringList listNames, selList;
    for(int i=0; i<model.rowCount(); ++i)
    {
        QSqlRecord record = model.record(i);
        listNames.append(record.value("serialNumber").toString());
    }
    foreach(QString name, listNames)
        if(name.indexOf(new_SN, 0, Qt::CaseInsensitive) != -1)
            selList.append(name);

    QModelIndexList indexList = model.match(model.index(0, 0), Qt::DisplayRole, selList.first());
    QModelIndex selectedIndex(indexList.first());
    listDBNumbers -> setCurrentIndex(selectedIndex);
}
Litkevich Yuriy Дата 14.11.2008, 16:51
  AD, в указанной теме говорилось об автозавершении, т.е. есть комбобокс, внего вводятся символы, а в выподающем списке показывается наиболееблизкое совпадение.

у тебя все тоже самое, только поле в вода и список, список в комбобоксе использует концепцию модель/представление, а для авто завершения QCompleter который всю механнику совпадений и связь с Селекшнмодель берет на себя.

Т.о. тебе указан путь к решению задачи, готового кода скорее всего нет.
AD Дата 14.11.2008, 15:55
  Не очень-то подходит. QComboBox имеет довольно удобные функции, которых нет в QListView! Потом в данном примере не указывается как фокус на нем установить. В QComboBox просто выбирается заданный элемент, ЕСЛИ НА НЕГО НАЖАТЬ!!!
Litkevich Yuriy Дата 14.11.2008, 15:34
  тут
AD Дата 14.11.2008, 15:14
  Блин, я реально не могу найти нужную тему. А мне это очень необходимо!!! :(
AD Дата 14.11.2008, 14:09
 
Цитата(Litkevich Yuriy)
AD, ищи по форуму, про автоподстановку в комбобоксе, недавно было, механизм тотже

Искал по этим словам. Не нашел. Дай, пожалуйста, ссылку! :) Заранее спасибо.
Litkevich Yuriy Дата 14.11.2008, 13:48
  AD, ищи по форуму, про автоподстановку в комбобоксе, недавно было, механизм тотже
AD Дата 14.11.2008, 13:08
  Вроде ведь многие работали с таблицами, с БД, с модель-представление. Неужели никто не сталкивался с подобными задачами? Мне кажется такого рода задачка в первую очередь встанет. По заданному значению параметра найти индекс модели. Помогите, пожалуйста.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 2:00