crossplatform.ru

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


  Ответ в Метод findText(), проблема с флагом QWebPage::HighlightAllOccurrences
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 10 сообщений [ в обратном порядке ]
QMainWindow Дата 11.8.2011, 18:51
  Никто не делал поиска? :)
QMainWindow Дата 10.8.2011, 12:09
  Привет всем!
Интересная штука творится у меня с флагом 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);
}

Да, и еще. Когда этот флаг убираю, закрываю окно поиска, то подсветка всех совпадений все равно остается...
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 18.4.2024, 16:26