LINUX.ORG.RU

qt console app truble

 


0

1

Всем привет! Начинающий изучать qt, да и c++ наверное. При попытке выполнить - сообщение:

QWidget: Cannot create a QWidget when no GUI is being used
Аварийный останов

Так же собирается с: указанием:

 -I/usr/include/qt4/QtGui 

Буду премного благодарен, если взгляните на код в конце сообщения и поможете разобраться.

Я вообще не очень еще понимаю, как это делается. Но задача пока такая(этап):

  • По урлу скачать html страницу, занести чистый текст(выдрать его без тегов, можно кстати и с ними) в какое-нибудь «хранилище».
  • В этом хранилище найти фразу по шаблону ip:port.

Для начала хотел просто вывести чистый текст в консоль. Правда, что qstring вообще не годится для этого? Тогда что использовать? Куда вставлять этот текст, в контейнер или qtextstream?

Правильно ли фраза: pars_page = page.mainFrame()->toPlainText(); и почему :)

Чего я не понимаю и где про это почитать?

Спасибо большое!

main.cpp

#include <QCoreApplication>
#include "parser.h"

int main(int argc, char** argv)
{ 
  QCoreApplication app(argc, argv);
  Parser plist("http://moreproxies.blogspot.ru/2012/12/alive-and-alive-ssl-proxies-19122012.html");
  plist.getData();
  return app.exec(); 
}

parser.h

#ifndef parser_h
#define parser_h

#include <QtCore/QObject>
#include <QMap>
#include <QString>
#include <iostream>
#include <QWebFrame>
#include <QWebPage>
#include <QUrl>

class Parser: public QObject
{
  Q_OBJECT

  public:
    Parser(const QString tmp_url);
    ~Parser();
    void getData();
    void parse();
    
  private:
    QUrl url;
    QMap <QString, QString> pars_proxy;
    QWebPage page;
    //QWebFrame frame;

  private slots:
    void render();
};

#endif //parser_h

oarser.cpp

#include "parser.h"
#include <QDebug>


Parser::Parser(const QString tmp_url)
{
  url.setUrl(tmp_url);
  qDebug()<<"sda";
  connect( &page, SIGNAL(loadFinished(bool)), this, SLOT(render()) );
}

Parser::~Parser()
{
  
};

void Parser::render()
{
  parse();
}

void Parser::getData()
{

  page.mainFrame()->load(url);
  
}

void Parser::parse()
{
  QString pars_page;
  pars_page = page.mainFrame()->toPlainText();
//  frame = page.mainFrame();
//  pars_page = frame.toPlainText();
  qDebug() << pars_page;
}



Последнее исправление: MaksVal (всего исправлений: 13)
Ответ на: комментарий от Valdor

Например? Я вроде сверху до низу его просмотрел. И как опечатка или грамматическая ошибка будет «вызывать qwidget?»

MaksVal
() автор топика

У тебя косяки с подключёнными Qt-модулями. Возможно, QtWebKit требует QtGui.

Вообще для парсинга HTML, который есть XML, лучше и использовать парсеры XML, которые webkit-а не требуют. В документации куча примеров.

schizoid ★★★
()
Ответ на: комментарий от Valdor

Судя по твоим действиям, то ты архив не качал, т.к. это наверное не нужно и лень заморачиваться. Если даже и качал, то не «вчитывался». Вопрос, зачем тогда писать такие советы, когда они очевидны?

MaksVal
() автор топика

не надо тебе вебкит друк. тебе надо http клиента =) документацию то пробовал вообще читать по Qt и иерархию классов глядеть?

MikeDM ★★★★★
()
Ответ на: комментарий от visual

Да просто хотелось изучать, потом усложнить. Потом перейти на более сложные вещи, надо же с чего-то начинать.

MaksVal
() автор топика
Ответ на: комментарий от MaksVal

изучать фреймворк надо начинать с документации и примеров.

ЗЫ если хочешь подтянуть Qt4 стучись в жаббер mikedmorto собако gmail.com

я веду лекции по Qt4 C++ для начинающих и среднего уровня в скайпе.

MikeDM ★★★★★
()
$ diff -u main1.cpp main.cpp 
--- main1.cpp   2013-01-09 21:15:25.774452168 +0000
+++ main.cpp    2013-01-09 21:15:20.941144258 +0000
@@ -1,10 +1,11 @@
-#include <QCoreApplication>
+#include <QApplication>
 #include "parser.h"
 
 int main(int argc, char** argv)
 { 
-  QCoreApplication app(argc, argv);
+  QApplication app(argc, argv);
   Parser plist("http://moreproxies.blogspot.ru/2012/12/alive-and-alive-ssl-proxies-19122012.html");
   plist.getData();
   return app.exec(); 
 }
false ★★★★★
()
Ответ на: комментарий от false

юзать WebKit для анализа странички с целью найти пару IP:PORT это туннельным микроскопом тараканов бить жеж.

MikeDM ★★★★★
()
Ответ на: комментарий от false

Всем спасибо! Действительно, буду перечитывать доки и смотреть дальше!

MaksVal
() автор топика
Ответ на: комментарий от MikeDM

я веду лекции по Qt4 C++ для начинающих и среднего уровня в скайпе.

И как доход?

Dragon59 ★★
()
Ответ на: комментарий от Valdor

«truble» - это что-то типа «бида»

anonymous
()
Ответ на: комментарий от MaksVal

Ладно, тогда не едь. Обойдусь без гостинца.

Valdor ★★
()

-I/usr/include/qt4/QtGui

Если не изменяет память, то в файле projectname.pro вам надо указать, что вы юзаете гуй.

CONFIG += gui
CONFIG += qt

(Это для QT4, в пятой версии переменная называется не CONFIG, а просто QT).

Ну и там же вам придется много других радостей дописывать, усли вы их будете использовать (треды, сеть и т.п.).

В ответе я исходил из того, что вы компилируете через IDE Qt Creator. Возможно, если вы используете другую IDE, там что-то будет иначе. (хотя, по идее, qmake`у пофиг, что у вас за IDE, ему файл проекта нужен)

RiseOfDeath ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.