crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> как пользоваться bool QTextEdit::find(const QString & exp, QTextDocument::FindFlags options = 0)
eldar85
  опции профиля:
сообщение 30.3.2010, 8:07
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


попробывал так:
QTextDocument *document = text->document();
           QTextCursor newCursor(document);

           QString searchString = "([0-9]*)";
           document->find(searchString, newCursor);


но он ничего не находит.

хочу написать что то типа текстового редактора с поиском слова. посмотрел пример найденый в сети, но там использован qt disainer.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 30.3.2010, 8:54
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


eldar85,
эта функция ищет строку а не регулярное выражение которое ты задаешь.
вероятно строки "[0-9]*" нет в документе и поэтому ничего не находит.
попробуй в строке
QString searchString = "([0-9]*)";

замени
QString на QRegExp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 30.3.2010, 10:56
Сообщение #3


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


спасибо, но тоже не выходит. не находит зараза.
можно коннечно вот так сделать
QString fin;
QRegExp rx("([0-9]*)");


         int pos = 0;

         while ((pos = rx.indexIn(text, pos)) != -1)
         {
             fin =rx.cap(1);
             pos += rx.matchedLength();
         }

но опять же он не выделит найденный текст, а просто поместит его в строку....
и хотелось бы все же освоить функцию find();

Сообщение отредактировал eldar85 - 30.3.2010, 11:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 30.3.2010, 12:01
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


хочешь сказать что это не работает?
Цитата
QTextCursor QTextDocument::find ( const QRegExp & expr, const QTextCursor & cursor, FindFlags options = 0 ) const
Finds the next occurrence, matching the regular expression, expr, in the document. The search starts at the position of the given cursor, and proceeds forwards through the document unless specified otherwise in the search options. The options control the type of search performed. The FindCaseSensitively option is ignored for this overload, use QRegExp::caseSensitivity instead.

Returns a cursor with the match selected if a match was found; otherwise returns a null cursor.

If the given cursor has a selection, the search begins after the selection; otherwise it begins at the cursor's position.

By default the search is case-sensitive, and can match text anywhere in the document.

не верю
ищи ошибку.

П.С. Хотя может баг, но это маловероятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 30.3.2010, 23:08
Сообщение #5


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


я в этом QTextCursor QTextDocument::find ( const QRegExp & expr, const QTextCursor & cursor, FindFlags options = 0 ) const
вообще не пойму что подставлять сюда - const QTextCursor & cursor и сюда - FindFlags options = 0 ...
ладно, буду дальше читать книгу по Qt, может что нить еще полезное вычитаю)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 31.3.2010, 8:39
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(eldar85 @ 31.3.2010, 0:08) *
сюда - const QTextCursor & cursor

курсор от которого искать
Цитата(eldar85 @ 31.3.2010, 0:08) *
и сюда - FindFlags options = 0 ...

опции поиска, с учетом и без учёта регистра и проч.
у тебя несколько перегруженных функций QTextDocument::find, используй любую с поиском регулярного выражения. А лучше попробуй обе.
Возвращают они курсор в первой найденой позиции в случае успеха.

П.С.
и будь внимательнее в названии темы ты указал одну функцию, а спрашиваешь про другую(другие).....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 31.3.2010, 11:43
Сообщение #7


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

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




Репутация:   0  


хорошо, спасибо)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 28.1.2025, 17:16