crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QT и регулярные выражения, отображения html в QTextEdit при помощи регулярных выражений
bynet
  опции профиля:
сообщение 19.5.2008, 16:26
Сообщение #1


Студент
*

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

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




Репутация:   0  


Есть програмка. Она открывает html файл и отображает его код. Надо при помощи регулярных выражений сделать чтобы отображался не html код а страничка. Обязательно это надо сделать при помощи регулярных выражениях.
Как сюда прикрутить регулярные выражения и вообще как их использовать?
CODE
#include <QtGui>
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) {

textEdit = new QTextEdit;
setCentralWidget(textEdit);
createActions();
createMenus();


}


void MainWindow::createMenus()
{
menu = menuBar()->addMenu(tr("&File"));
menu->addAction(openAct);
}


void MainWindow::createActions()
{
openAct = new QAction(tr("&Open..."), this);
openAct->setShortcut(tr("Ctrl+O"));
openAct->setStatusTip(tr("Open an existing file"));
connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
}


void MainWindow::open()
{

QString fileName = QFileDialog::getOpenFileName(this);
if (!fileName.isEmpty())
loadFile(fileName);

}


void MainWindow::loadFile(const QString &fileName)
{
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());
QApplication::restoreOverrideCursor();


}


Сообщение отредактировал bynet - 19.5.2008, 16:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LuckLess
  опции профиля:
сообщение 19.5.2008, 18:13
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 31
Регистрация: 10.10.2007
Пользователь №: 8

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




Репутация:   0  


я правильно понимаю? Нужно сделать полноценный парсер HTML при помощи регулярных выражений ? :blink:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.5.2008, 19:44
Сообщение #3


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

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

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




Репутация:   40  


QTextEdit вроде как и без регулярных выражений умеет правильно отображать html странички, а не только код.
А обязательно регулярные выражения или как?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.5.2008, 7:44
Сообщение #4


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

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

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




Репутация:   94  


видимо это задание такое, освоить регулярные выражения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 20.5.2008, 10:04
Сообщение #5


Студент
*

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

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




Репутация:   0  


нужно освоить регулярные выражения, это в универе задание. Я понимаю что QTextEdit сам может это всё сделать, но нужно имеено рег.выражения использовать. Помогите пожалуйста.

Сообщение отредактировал bynet - 20.5.2008, 10:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.5.2008, 10:16
Сообщение #6


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

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

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




Репутация:   94  


ну начни подбирать регулярные выражения, которые будут удалять теги, чтобы только текст остался.
Для этих экспериментов можно пользоваться разными программами:
* %QTDIR%\examples\tools\regexp
* RegExp Planner

---
И ведь ты уже создавал тему "Регулярные выражения QT, отображение HTML", в ней бы и продолжал
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 20.5.2008, 11:00
Сообщение #7


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.5.2008, 10:16) *
ну начни подбирать регулярные выражения, которые будут удалять теги, чтобы только текст остался.
Для этих экспериментов можно пользоваться разными программами:
* %QTDIR%\examples\tools\regexp
* RegExp Planner

---
И ведь ты уже создавал тему "Регулярные выражения QT, отображение HTML", в ней бы и продолжал


А как мне с сылками быть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.5.2008, 11:20
Сообщение #8


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

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

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




Репутация:   94  


ну я думаю до ссылок доберешся в свое время, начни с простого.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 20.5.2008, 12:10
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

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




Репутация:   17  


Вообще-то задание довольно уродское: принципиальное ограничение регулярных языков - это неумение работать со структурами произвольной вложенности. Грубо говоря, нельзя написать регулярное выражение для проверки баланса скобок.
А html как раз является довольно ярким представителем языков с произвольной вложенностью.

Хотя может быть задание как раз направлено на то, чтобы студенты как можно полнее осознали сей факт. :)

Ну а как делать - вполне понятно. :)
Если дружишь с python-ом - там один из парсеров html из стандартной поставки построен именно на regex-пах. Всего 370 строк легкочитаемого кода. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bynet
  опции профиля:
сообщение 20.5.2008, 13:40
Сообщение #10


Студент
*

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

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




Репутация:   0  


насчет вложенности - минимально. Мне бы примерчик, например как заменить ссылку, или текст. А то в тех примерах столько много всего что сразу легко запутаться.
Возьмем к примеру такой код

<html>
<body>

<a href="http://www.crossplatform.ru">Best qt forum</a>

</bode>
<html>

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

Сообщение отредактировал bynet - 20.5.2008, 13:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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