![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ruzik |
![]()
Сообщение
#1
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Скажите пожалуйста что я сделал не так с 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 |
![]()
Сообщение
#2
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Скажите пожалуйста что я сделал не так с 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 |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо за помощь, но возникла другая проблема:
Я вбиваю в строку то что нужно например "Asd", у меня есть в QPlainTextEdit с которым связаны строка поиска символы "Asd" но мне выдает false, то есть не найдено, возможно дело в кодировках, не подскажите как решить эту проблему? Заранее огромное спасибо! |
|
|
ruzik |
![]()
Сообщение
#4
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Код остался неизменным(то же что и в 1 посте)
|
|
|
silver47 |
![]()
Сообщение
#5
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Ничего не пойму. Есть LineEdit, который соединён со слотом. Что необходимо сделать в этом слоте? Найти некое вхождение строки "text" в этот lineEdit и вывести его в Label?
А понял. попробуйте так: plainTextEdit->toPlainText().contains(lineEdit->text()); UPD Нашёл Ваше сообщение в другой теме, понял чего хотите. Обратите внимание, что метод QPlainText::find(), по умолчанию, ищет с текущей позиции курсора ВПЕРЕД. А курсор у Вас стоит в самом конце документа. Или переставьте его перед поиском в самое начало, или ищите в обоих направлениях от курсора. Вот так искать в обратном направлении QPlainText::find("texttofind", QTextDocument::FindBackward); Сообщение отредактировал silver47 - 17.4.2011, 18:01 |
|
|
ruzik |
![]()
Сообщение
#6
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Огромное спасибо, как раз то что мне нужно
|
|
|
ruzik |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Ну и если позволите последний вопрос
![]() Как изменить цвет найденного цвета в поиске, а то у меня по-умолчанию светло-серый оказался, который на белом фоне не особо хорошо виден |
|
|
silver47 |
![]()
Сообщение
#8
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
Ну и если позволите последний вопрос ![]() Как изменить цвет найденного цвета в поиске, а то у меня по-умолчанию светло-серый оказался, который на белом фоне не особо хорошо виден Элементарно! Но для этого придется менять палитру. Это делается таким образом:
теперь прикрутите рюшечки для вашего приложения: заставьте изменять цвет выделения на подобный только при поиске (ну что-то типа если строка поиска не свободна, то применить новую палитру, если свободна то стандартную). |
|
|
ruzik |
![]()
Сообщение
#9
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Возникла другая проблема есть код:
plainTextEdit->find(searchLineEdit->text(), QTextDocument::FindBackward); он ищет все слова позади текущего положения каретки, как сделать так что бы 1) или искало слова по обе стороны каретки 2) или как поставит каретку в конец QPlainTextEdit Я в ассисте смотрел подходящего флага нет |
|
|
silver47 |
![]()
Сообщение
#10
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: ![]() ![]() ![]() |
2) или как поставит каретку в конец QPlainTextEdit - перемещает курсор в начало документа. можно искать в одном направлении, и, если поиск неудачен - искать в другом.
Но тут выделение при поиске не работает корректно. Думаю что первый вариант более предпочтителен, все равно позиция курсора будет меняться при первом же найденном вхождении. |
|
|
EgorKakBE |
![]()
Сообщение
#11
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 27.4.2011 Пользователь №: 2635 Спасибо сказали: 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()); //это просто проверка(слот не срабатывает) } ты не ссылаешься на объект searchLineEdit connect(&searchLineEdit, SIGNAL(textChanged(const QString & text)), this, SLOT(findInTheText(const QString & text))); Сошлитесь на объект searchLineEdit! connect(&searchLineEdit,..... |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 22.6.2025, 20:37 |