Интересная штука творится у меня с флагом 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);
}
Да, и еще. Когда этот флаг убираю, закрываю окно поиска, то подсветка всех совпадений все равно остается...