Connect |
Здравствуйте, гость ( Вход | Регистрация )
Connect |
ruzik |
13.4.2011, 21:27
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Скажите пожалуйста что я сделал не так с connectoм, вроде все правильно, но не работает
connect(searchLineEdit, SIGNAL(textChanged(const QString & text)), this, SLOT(findInTheText(const QString & text))); //searchLineEdit - объект типа QLineEdit //---------- protected slots: void findInTheText(const QString & text); //---------- void RizekQssEditor::findInTheText(const QString & text) { QVariant a = plainTextEdit->find(text); searchLabel->setText(a.toString()); //это просто проверка(слот не срабатывает) } |
|
|
silver47 |
14.4.2011, 5:28
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Скажите пожалуйста что я сделал не так с connectoм, вроде все правильно, но не работает connect(searchLineEdit, SIGNAL(textChanged(const QString & text)), this, SLOT(findInTheText(const QString & text))); //searchLineEdit - объект типа QLineEdit //---------- protected slots: void findInTheText(const QString & text); //---------- void RizekQssEditor::findInTheText(const QString & text) { QVariant a = plainTextEdit->find(text); searchLabel->setText(a.toString()); //это просто проверка(слот не срабатывает) } гм. А разве в методе коннект необходимо указывать имена переменных? Нужно так: Следует не путать textChanged и textEdited, первый вызывается при всяком изменении текста, другой - только тогда, когда редактирование завершено (Нажат Enter или перешли на другой виджет)
|
|
|
ruzik |
17.4.2011, 13:16
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Спасибо за помощь, но возникла другая проблема:
Я вбиваю в строку то что нужно например "Asd", у меня есть в QPlainTextEdit с которым связаны строка поиска символы "Asd" но мне выдает false, то есть не найдено, возможно дело в кодировках, не подскажите как решить эту проблему? Заранее огромное спасибо! |
|
|
ruzik |
17.4.2011, 17:25
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Код остался неизменным(то же что и в 1 посте)
|
|
|
silver47 |
17.4.2011, 17:30
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Ничего не пойму. Есть LineEdit, который соединён со слотом. Что необходимо сделать в этом слоте? Найти некое вхождение строки "text" в этот lineEdit и вывести его в Label?
А понял. попробуйте так: plainTextEdit->toPlainText().contains(lineEdit->text()); UPD Нашёл Ваше сообщение в другой теме, понял чего хотите. Обратите внимание, что метод QPlainText::find(), по умолчанию, ищет с текущей позиции курсора ВПЕРЕД. А курсор у Вас стоит в самом конце документа. Или переставьте его перед поиском в самое начало, или ищите в обоих направлениях от курсора. Вот так искать в обратном направлении QPlainText::find("texttofind", QTextDocument::FindBackward); Сообщение отредактировал silver47 - 17.4.2011, 18:01 |
|
|
ruzik |
17.4.2011, 18:54
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Огромное спасибо, как раз то что мне нужно
|
|
|
ruzik |
18.4.2011, 15:41
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Ну и если позволите последний вопрос
Как изменить цвет найденного цвета в поиске, а то у меня по-умолчанию светло-серый оказался, который на белом фоне не особо хорошо виден |
|
|
silver47 |
18.4.2011, 17:57
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Ну и если позволите последний вопрос Как изменить цвет найденного цвета в поиске, а то у меня по-умолчанию светло-серый оказался, который на белом фоне не особо хорошо виден Элементарно! Но для этого придется менять палитру. Это делается таким образом:
теперь прикрутите рюшечки для вашего приложения: заставьте изменять цвет выделения на подобный только при поиске (ну что-то типа если строка поиска не свободна, то применить новую палитру, если свободна то стандартную). |
|
|
ruzik |
19.4.2011, 16:24
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Возникла другая проблема есть код:
plainTextEdit->find(searchLineEdit->text(), QTextDocument::FindBackward); он ищет все слова позади текущего положения каретки, как сделать так что бы 1) или искало слова по обе стороны каретки 2) или как поставит каретку в конец QPlainTextEdit Я в ассисте смотрел подходящего флага нет |
|
|
silver47 |
20.4.2011, 5:14
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
2) или как поставит каретку в конец QPlainTextEdit - перемещает курсор в начало документа. можно искать в одном направлении, и, если поиск неудачен - искать в другом.
Но тут выделение при поиске не работает корректно. Думаю что первый вариант более предпочтителен, все равно позиция курсора будет меняться при первом же найденном вхождении. |
|
|
Текстовая версия | Сейчас: 6.1.2025, 18:34 |