elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  es posible hacer un navegador web con solo conocer el lenguaje C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: es posible hacer un navegador web con solo conocer el lenguaje C  (Leído 7,839 veces)
linux1

Desconectado Desconectado

Mensajes: 138



Ver Perfil
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #10 en: 5 Julio 2010, 05:39 am »

si, pero es nativo o usa el internet explorer?
la misma duda amigo og ?¿

gracias x las respuestas.


En línea



Zazú

Desconectado Desconectado

Mensajes: 116


Ver Perfil
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #11 en: 5 Julio 2010, 06:24 am »

Estoy casi un 90% seguro de que es nativo..   :silbar:
 99 :P


En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #12 en: 5 Julio 2010, 06:36 am »

No, no usa IE como base.
A por cierto, los ejemplos no vienen con las librerias, mas bien bienen con el IDE oficial.
En línea

|-
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #13 en: 5 Julio 2010, 07:07 am »

Yo no estaría tan seguro, mucho menos un 99%, probablemente use ActiveX. Me gustaría ver el código. Alguien puede colgar el ejemplo? no tengo Qt instalado en este ordenador.

Saludos
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #14 en: 5 Julio 2010, 07:26 am »

Yo no estaría tan seguro, mucho menos un 99%, probablemente use ActiveX. Me gustaría ver el código. Alguien puede colgar el ejemplo? no tengo Qt instalado en este ordenador.

Saludos

main.cpp
Código
  1. #include <QtGui>
  2. #include "mainwindow.h"
  3.  
  4. int main(int argc, char * argv[])
  5. {
  6.    QApplication app(argc, argv);
  7.    MainWindow browser;
  8.    browser.show();
  9.    return app.exec();
  10. }

mainwindow.h
Código
  1. #include <QtGui>
  2.  
  3. class QWebView;
  4. QT_BEGIN_NAMESPACE
  5. class QLineEdit;
  6. QT_END_NAMESPACE
  7.  
  8. //! [1]
  9. class MainWindow : public QMainWindow
  10. {
  11.    Q_OBJECT
  12.  
  13. public:
  14.    MainWindow();
  15.  
  16. protected slots:
  17.  
  18.    void adjustLocation();
  19.    void changeLocation();
  20.    void adjustTitle();
  21.    void setProgress(int p);
  22.    void finishLoading(bool);
  23.  
  24.    void highlightAllLinks();
  25.    void rotateImages(bool invert);
  26.    void removeGifImages();
  27.    void removeInlineFrames();
  28.    void removeObjectElements();
  29.    void removeEmbeddedElements();
  30.  
  31. private:
  32.    QString jQuery;
  33.    QWebView *view;
  34.    QLineEdit *locationEdit;
  35.    QAction *rotateAction;
  36.    int progress;
  37. //! [1]
  38. };

mainwindow.cpp
Código
  1. #include <QtGui>
  2. #include <QtWebKit>
  3. #include "mainwindow.h"
  4.  
  5. //! [1]
  6.  
  7. MainWindow::MainWindow()
  8. {
  9.    progress = 0;
  10.  
  11.    QFile file;
  12.    file.setFileName(":/jquery.min.js");
  13.    file.open(QIODevice::ReadOnly);
  14.    jQuery = file.readAll();
  15.    file.close();
  16. //! [1]
  17.  
  18.    QNetworkProxyFactory::setUseSystemConfiguration(true);
  19.  
  20. //! [2]
  21.    view = new QWebView(this);
  22.    view->load(QUrl("http://www.google.com/ncr"));
  23.    connect(view, SIGNAL(loadFinished(bool)), SLOT(adjustLocation()));
  24.    connect(view, SIGNAL(titleChanged(QString)), SLOT(adjustTitle()));
  25.    connect(view, SIGNAL(loadProgress(int)), SLOT(setProgress(int)));
  26.    connect(view, SIGNAL(loadFinished(bool)), SLOT(finishLoading(bool)));
  27.  
  28.    locationEdit = new QLineEdit(this);
  29.    locationEdit->setSizePolicy(QSizePolicy::Expanding, locationEdit->sizePolicy().verticalPolicy());
  30.    connect(locationEdit, SIGNAL(returnPressed()), SLOT(changeLocation()));
  31.  
  32.    QToolBar *toolBar = addToolBar(tr("Navigation"));
  33.    toolBar->addAction(view->pageAction(QWebPage::Back));
  34.    toolBar->addAction(view->pageAction(QWebPage::Forward));
  35.    toolBar->addAction(view->pageAction(QWebPage::Reload));
  36.    toolBar->addAction(view->pageAction(QWebPage::Stop));
  37.    toolBar->addWidget(locationEdit);
  38. //! [2]
  39.  
  40. //! [3]
  41.    QMenu *effectMenu = menuBar()->addMenu(tr("&Effect"));
  42.    effectMenu->addAction("Highlight all links", this, SLOT(highlightAllLinks()));
  43.  
  44.    rotateAction = new QAction(this);
  45.    rotateAction->setIcon(style()->standardIcon(QStyle::SP_FileDialogDetailedView));
  46.    rotateAction->setCheckable(true);
  47.    rotateAction->setText(tr("Turn images upside down"));
  48.    connect(rotateAction, SIGNAL(toggled(bool)), this, SLOT(rotateImages(bool)));
  49.    effectMenu->addAction(rotateAction);
  50.  
  51.    QMenu *toolsMenu = menuBar()->addMenu(tr("&Tools"));
  52.    toolsMenu->addAction(tr("Remove GIF images"), this, SLOT(removeGifImages()));
  53.    toolsMenu->addAction(tr("Remove all inline frames"), this, SLOT(removeInlineFrames()));
  54.    toolsMenu->addAction(tr("Remove all object elements"), this, SLOT(removeObjectElements()));
  55.    toolsMenu->addAction(tr("Remove all embedded elements"), this, SLOT(removeEmbeddedElements()));
  56.  
  57.    setCentralWidget(view);
  58.    setUnifiedTitleAndToolBarOnMac(true);
  59. }
  60. //! [3]
  61.  
  62. //! [4]
  63. void MainWindow::adjustLocation()
  64. {
  65.    locationEdit->setText(view->url().toString());
  66. }
  67.  
  68. void MainWindow::changeLocation()
  69. {
  70.    QUrl url = QUrl(locationEdit->text());
  71.    view->load(url);
  72.    view->setFocus();
  73. }
  74. //! [4]
  75.  
  76. //! [5]
  77. void MainWindow::adjustTitle()
  78. {
  79.    if (progress <= 0 || progress >= 100)
  80.        setWindowTitle(view->title());
  81.    else
  82.        setWindowTitle(QString("%1 (%2%)").arg(view->title()).arg(progress));
  83. }
  84.  
  85. void MainWindow::setProgress(int p)
  86. {
  87.    progress = p;
  88.    adjustTitle();
  89. }
  90. //! [5]
  91.  
  92. //! [6]
  93. void MainWindow::finishLoading(bool)
  94. {
  95.    progress = 100;
  96.    adjustTitle();
  97.    view->page()->mainFrame()->evaluateJavaScript(jQuery);
  98.  
  99.    rotateImages(rotateAction->isChecked());
  100. }
  101. //! [6]
  102.  
  103. //! [7]
  104. void MainWindow::highlightAllLinks()
  105. {
  106.    QString code = "$('a').each( function () { $(this).css('background-color', 'yellow') } )";
  107.    view->page()->mainFrame()->evaluateJavaScript(code);
  108. }
  109. //! [7]
  110.  
  111. //! [8]
  112. void MainWindow::rotateImages(bool invert)
  113. {
  114.    QString code;
  115.    if (invert)
  116.        code = "$('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(180deg)') } )";
  117.    else
  118.        code = "$('img').each( function () { $(this).css('-webkit-transition', '-webkit-transform 2s'); $(this).css('-webkit-transform', 'rotate(0deg)') } )";
  119.    view->page()->mainFrame()->evaluateJavaScript(code);
  120. }
  121. //! [8]
  122.  
  123. //! [9]
  124. void MainWindow::removeGifImages()
  125. {
  126.    QString code = "$('[src*=gif]').remove()";
  127.    view->page()->mainFrame()->evaluateJavaScript(code);
  128. }
  129.  
  130. void MainWindow::removeInlineFrames()
  131. {
  132.    QString code = "$('iframe').remove()";
  133.    view->page()->mainFrame()->evaluateJavaScript(code);
  134. }
  135.  
  136. void MainWindow::removeObjectElements()
  137. {
  138.    QString code = "$('object').remove()";
  139.    view->page()->mainFrame()->evaluateJavaScript(code);
  140. }
  141.  
  142. void MainWindow::removeEmbeddedElements()
  143. {
  144.    QString code = "$('embed').remove()";
  145.    view->page()->mainFrame()->evaluateJavaScript(code);
  146. }
  147. //! [9]

symbianpkgrules.pri
Código:
!symbian: error(Only include this file for Symbian platforms)

RSS_RULES ="group_name=\"QtExamples\";"

vendorinfo = \
    "; Localised Vendor name" \
    "%{\"Nokia, Qt\"}" \
    " " \
    "; Unique Vendor name" \
    ":\"Nokia, Qt\"" \
    " "

default_deployment.pkg_prerules += vendorinfo

isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg

y como resource incluyes jquery.min.js

Aparte corre bajo *nix :P

Saludos!
En línea

|-
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #15 en: 5 Julio 2010, 07:48 am »

Bien, no usa ActiveX. No obstante, lo relevante radica en el port de WebKit, y precisamente lo que se encuentra allí abstraído es lo que Linux1 quiere saber como hacer.

Igualmente el dato le servirá ya que dicho port es open source, así que en todo caso podrá ponerse a leer el código a ver que encuentra, pero realmente no creo que sea una tarea sencilla para quien esta comenzando con el lenguaje.

Saludos!
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
linux1

Desconectado Desconectado

Mensajes: 138



Ver Perfil
Re: es posible hacer un navegador web con solo conocer el lenguaje C
« Respuesta #16 en: 5 Julio 2010, 16:51 pm »

Bien, no usa ActiveX. No obstante, lo relevante radica en el port de WebKit, y precisamente lo que se encuentra allí abstraído es lo que Linux1 quiere saber como hacer.

Igualmente el dato le servirá ya que dicho port es open source, así que en todo caso podrá ponerse a leer el código a ver que encuentra, pero realmente no creo que sea una tarea sencilla para quien esta comenzando con el lenguaje.

Saludos!
gracias a todos ya me di cuenta que es algo complejo para alquien que comienza yo solo queria una guia o introduccion y ya me la dieron gracias.
En línea



Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines