QT и регулярные выражения, отображения html в QTextEdit при помощи регулярных выражений |
Здравствуйте, гость ( Вход | Регистрация )
QT и регулярные выражения, отображения html в QTextEdit при помощи регулярных выражений |
Litkevich Yuriy |
20.5.2008, 13:59
Сообщение
#11
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка а я неуверен что это вообще получится. Как ты сделаешь ссылку, если на время забыть про регулярные выражения, вот есть у тебя адрес и текст который должен быть ссылкой, что ты должен сделать, чтобы он в QTextEdit отображался как ссылка? |
|
|
bynet |
20.5.2008, 14:28
Сообщение
#12
|
Студент Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: 0 |
как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка а я неуверен что это вообще получится. Как ты сделаешь ссылку, если на время забыть про регулярные выражения, вот есть у тебя адрес и текст который должен быть ссылкой, что ты должен сделать, чтобы он в QTextEdit отображался как ссылка? незнаю как сделать с помощью рег.выражения, чтобы в 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 |
отлично, значит надо шаблоны: Выделяющий адрес, Выделяющий текст ссылки, а затем удаляющий тэги. Теперь идти учить регулярные выражения Книгу то я прочитал по регулярных выражениях ))) , но как их прикрутить сюда и как записать, приведите хотябы для этого примера, рег выражения и как их использовать в данном случае |
|
|
ViGOur |
20.5.2008, 14:45
Сообщение
#15
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
В переменной 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 |
Читай так:
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 21:37 |