crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QT и регулярные выражения, отображения html в QTextEdit при помощи регулярных выражений
Litkevich Yuriy
  опции профиля:
сообщение 20.5.2008, 13:59
Сообщение #11


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(bynet @ 20.5.2008, 17:40) *
как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка

а я неуверен что это вообще получится. Как ты сделаешь ссылку, если на время забыть про регулярные выражения, вот есть у тебя адрес и текст который должен быть ссылкой, что ты должен сделать, чтобы он в QTextEdit отображался как ссылка?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 20.5.2008, 14:28
Сообщение #12


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.5.2008, 13:59) *
Цитата(bynet @ 20.5.2008, 17:40) *
как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка

а я неуверен что это вообще получится. Как ты сделаешь ссылку, если на время забыть про регулярные выражения, вот есть у тебя адрес и текст который должен быть ссылкой, что ты должен сделать, чтобы он в QTextEdit отображался как ссылка?

незнаю

Цитата(bynet @ 20.5.2008, 14:01) *
Цитата(Litkevich Yuriy @ 20.5.2008, 13:59) *
Цитата(bynet @ 20.5.2008, 17:40) *
как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка

а я неуверен что это вообще получится. Как ты сделаешь ссылку, если на время забыть про регулярные выражения, вот есть у тебя адрес и текст который должен быть ссылкой, что ты должен сделать, чтобы он в QTextEdit отображался как ссылка?

незнаю


Вот мне сказали что можно вот так:

CODE
QString link = "http://www.crossplatform.ru";
QString text = "Best qt forum";

setHtml(QString("%2").arg(link).arg(text));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.5.2008, 14:31
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


отлично, значит надо шаблоны:
Выделяющий адрес,
Выделяющий текст ссылки,
а затем удаляющий тэги.
Теперь идти учить регулярные выражения :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 20.5.2008, 14:41
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.5.2008, 14:31) *
отлично, значит надо шаблоны:
Выделяющий адрес,
Выделяющий текст ссылки,
а затем удаляющий тэги.
Теперь идти учить регулярные выражения :)


:blink: :blink: :blink: Книгу то я прочитал по регулярных выражениях ))) , но как их прикрутить сюда и как записать, приведите хотябы для этого примера, рег выражения и как их использовать в данном случае
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 20.5.2008, 14:45
Сообщение #15


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


QString GetCap( QString szRegExp, QString szData)
{
    QString szCap;
    QRegExp rx( szRegExp, Qt::CaseInsensitive);
    int pos = rx.indexIn( szData);
    if (pos > -1)
    {
        szCap = rx.cap( 1);
    }

    return szCap;
}

QString szData; // В ней твой html текст.
QString szRegExp = "^.*<html.*<body[^<>]*>(.*)</body.*";
QString szLink = GetCap( szRegExp, szData);
В переменной szLink будет строка:
Цитата
<a href="http://www.crossplatform.ru">Best qt forum</a>
А потом вроде этого разбираешь на URL и текст.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 20.5.2008, 16:25
Сообщение #16


Студент
*

Группа: Участник
Сообщений: 69
Регистрация: 17.3.2008
Из: Belarus
Пользователь №: 124

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




Репутация:   0  


Данные в QString szData пробую добавить следующим образом: код ниже
Ругается следующим образом:

Linking...
mainwindow.obj : error LNK2019: unresolved external symbol "private: class QString __thiscall MainWindow::GetCap(class QString,class QString)" (?GetCap@MainWindow@@AAE?AVQString@@V2@0@Z) referenced in function "private: void __thiscall MainWindow::loadFile(class QString const &)" (?loadFile@MainWindow@@AAEXABVQString@@@Z)
debug\borws.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://d:\unui\borws\debug\BuildLog.htm"
borws - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


CODE
void MainWindow::loadFile(const QString &fileName)
{
QString szData;
QString szRegExp = "^.*<html.*<body[^<>]*>(.*)</body.*";



QFile file(fileName);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
QMessageBox::warning(this, tr("Application"),
tr("Cannot read file %1:\n%2.")
.arg(fileName)
.arg(file.errorString()));
return;
}

QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
//textEdit->setPlainText(in.readAll());


szData.append(in.readAll());
QString szLink = GetCap( szRegExp, szData);


textEdit->setPlainText(szLink);


QApplication::restoreOverrideCursor();


}

QString GetCap( QString szRegExp, QString szData)
{
QString szCap;
QRegExp rx( szRegExp, Qt::CaseInsensitive);
int pos = rx.indexIn( szData);
if (pos > -1)
{
szCap = rx.cap( 1);
}

return szCap;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 20.5.2008, 16:54
Сообщение #17


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Читай так:
    QFile fileRead( szFile);
    if( !fileRead.open( QIODevice::ReadOnly))
    {
        qCritical( "Can'not open file: %s for read", qPrintable( szFile));
        return;
    }
    QString szData;
    QTextStream out( &fileRead);
    QString szLine;
    do
    {
        szLine = out.readLine();
        szData += szLine + "\r\n";
    }while( !szLine.isNull());

    fileRead.close();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 21:37