crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Метод findText(), проблема с флагом QWebPage::HighlightAllOccurrences, После установки - перестает искать
QMainWindow
  опции профиля:
сообщение 10.8.2011, 12:09
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

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




Репутация:   0  


Привет всем!
Интересная штука творится у меня с флагом QWebPage::HighlightAllOccurrences. После его установки, текст, который я ищу подсвечивается, но не ищется, т.е. поиск перестает бегать по всему документу.
Вот код:
Раскрывающийся текст
#include "FindDialog.h"
#include "ui_FindDialog.h"

FindDialog::FindDialog(QWidget *parent) : QDialog(parent), ui(new Ui::FindDialog)
{
    ui->setupUi(this);
    connect(ui->FindForwardButton, SIGNAL(clicked()), this, SLOT(findForward()));
    connect(ui->FindBackwardButton, SIGNAL(clicked()), this, SLOT(findBackward()));
    connect(ui->highlightAllCB, SIGNAL(toggled(bool)), this, SLOT(highlightAll(bool)));
    connect(ui->FindCaseSensitivelyCB, SIGNAL(toggled(bool)), this, SLOT(findCaseSensitive(bool)));
    connect(ui->SearchEdit, SIGNAL(textChanged(QString)), this, SLOT(textToFind(QString)));
    this->setFixedSize(333,94);
    caseSensitive = highlight = false;
}

void FindDialog::findForward()
{
    if(!ui->SearchEdit->text().isEmpty()) emit searchParameters(highlight, caseSensitive, Down, text);
}

void FindDialog::findBackward()
{
    if(!ui->SearchEdit->text().isEmpty()) emit searchParameters(highlight, caseSensitive, Up, text);
}

void FindDialog::highlightAll(bool highlight)
{
    highlight ? this->highlight = true : this->highlight = false;
}

void FindDialog::findCaseSensitive(bool caseSensitive)
{
    caseSensitive ? this->caseSensitive = true : this->caseSensitive = false;
}

void FindDialog::textToFind(QString text)
{
    this->text = text;
}

FindDialog::~FindDialog()
{
    delete ui;
}


Установка флагов в метод тут:
Раскрывающийся текст
void Viewer::find(bool highlight, bool caseSensitive, int direction, QString &text)
{
    QWebPage::FindFlags flag1, flag2, flag3;
    if(highlight) flag1 = QWebPage::HighlightAllOccurrences;
    if(caseSensitive) flag2 = QWebPage::FindCaseSensitively;
    if(direction == FindDialog::Up) flag3 = QWebPage::FindBackward;
    this->findText(text, flag1 | flag2 | flag3 | QWebPage::FindWrapsAroundDocument);
}

Да, и еще. Когда этот флаг убираю, закрываю окно поиска, то подсветка всех совпадений все равно остается...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 11.8.2011, 18:51
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

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




Репутация:   0  


Никто не делал поиска? :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 2.12.2020, 15:27