Clipper On Line • Ver Tópico - Qt5xhb tem suporte a navegador?

Qt5xhb tem suporte a navegador?

Outras bibliotecas visuais e IDEs para Harbour/xHarbour (xHGTK/HbWxW/GtWvT/GtWvW/WvWtools.etc)

Moderador: Moderadores

 

Qt5xhb tem suporte a navegador?

Mensagempor Vlademiro » 02 Set 2020 09:52

Pessoal, é possível ter meu próprio navegador baseado no Chrome V8 ?
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Qt5xhb tem suporte a navegador?

Mensagempor marcosgambeta » 03 Set 2020 14:40

O Qt 5 usava o WebKit nas primeiras versões, mas depois adotou o Chromium (Qt 5.4 em diante):

https://wiki.qt.io/QtWebEngine

Os módulos estão implementados no Qt5xHb: QtWebEngine, QtWebEngineCore e QtWebEngineWidgets.

Um exemplo básico seria assim:

/*

  Qt5xHb Project - Test Program

  Copyright (C) 2020 Marcos Antonio Gambeta

  E-mail:
  marcosgambeta AT outlook DOT com

  Website:
  https://github.com/marcosgambeta/Qt5xHb

*/

#include "qt5xhb.ch"

PROCEDURE Main ()

   LOCAL oApp
   LOCAL oWindow
   LOCAL oWebEngineView

   oApp := QApplication():new()

   QtWebEngine():initialize()

   oWindow := QWidget():new()
   oWindow:setWindowTitle("Teste da classe QWebEngineView")
   oWindow:resize(800,600)

   oWebEngineView := QWebEngineView():new(oWindow)
   oWebEngineView:move(20,20)
   oWebEngineView:resize(800-40,600-40)

   cHTML := ""
   cHTML += "<html>"
   cHTML += "<head>"
   cHTML += "<title>"
   cHTML += "Teste"
   cHTML += "</title>"
   cHTML += "</head>"
   cHTML += "</html>"
   cHTML += "<body>"
   cHTML += "<h1>"
   cHTML += "<p>"
   cHTML += "Teste"
   cHTML += "</p>"
   cHTML += "</h1>"
   cHTML += "</body>"

   oWindow:show()

   // use sempre depois do 'show'
   oWebEngineView:setHtml(cHTML)

   oApp:exec()

   oWindow:delete()

   oApp:delete()

RETURN
Anexos
QWebEngineView1.png
Teste com a classe QWebEngineView
QWebEngineView1.png (8.35 KiB) Visualizado 836 vezes
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Qt5xhb tem suporte a navegador?

Mensagempor Vlademiro » 03 Set 2020 15:28

Obrigado, pelo exemplo já posso visualizar a página, mas ainda não posso acessar remotamente, é isso ?

É porque eu quero ver se consigo executar alguma operação na máquina cliente lendo o HTML retornado pelo navegador. Já fiz isso há muito tempo mas no componente navegador da Microsoft. Era em access. Eu ficava lendo o HTML vindo do servidor e poderia ler algumas tags específicas que eu mesmo inventava. Dentro dessas tags tinha comandos que eu interpretava com a aplicação e executava. Dava pra interagir com periféricos, etc.

Mas se não der pra fazer isso tudo bem. O mais importante é ter um navegador.

Muito obrigado pelo retorno.
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Qt5xhb tem suporte a navegador?

Mensagempor marcosgambeta » 04 Set 2020 12:38

É possível acessar arquivos locais e sites da internet (http/https).

Mas há outras formas de acessar o conteúdo de uma página. Veja o exemplo abaixo, onde são utilizadas classes do módulo QtNetwork (rede e internet):

/*

  Qt5xHb Project - Test Program

  Copyright (C) 2020 Marcos Antonio Gambeta

  E-mail:
  marcosgambeta AT outlook DOT com

  Website:
  https://github.com/marcosgambeta/qt5xhb

*/

#include "qt5xhb.ch"

PROCEDURE Main()

   LOCAL oApp
   LOCAL oWindow
   LOCAL oTextEdit
   LOCAL oButton

   oApp := QApplication():new()

   oWindow := QWidget():new()
   oWindow:setWindowTitle( "Teste da classe QNetworkAccessManager" )
   oWindow:resize( 800, 600 )

   oTextEdit := QTextEdit():new( oWindow )
   oTextEdit:move( 20, 20 )
   oTextEdit:resize( 800 - 40, 600 - 40 )

   oButton := QPushButton():new( "GetHTML", oWindow )
   oButton:move( 0, 0 )
   oButton:resize( 100, 20 )
   oButton:onClicked( {|| oTextEdit:setPlainText( getHTML( "https://www.qt.io" ) ) } )

   oWindow:show()

   oApp:exec()

   oWindow:delete()

   oApp:delete()

RETURN

STATIC FUNCTION getHTML( cURL )

   LOCAL oManager
   LOCAL oResponse
   LOCAL lReady := .F.
   LOCAL cHTML := ""

   oManager := QNetworkAccessManager():new()
   oResponse := oManager:get( QNetworkRequest():new( QUrl():new( cURL ) ) )
   oResponse:onFinished( {|| lReady := .T. } )

   DO WHILE !lReady
      QCoreApplication():processEvents()
   ENDDO

   cHTML := oResponse:readAll():constData()

   oResponse:onFinished()

   oManager:delete()

RETURN cHTML


Se não houver necessidade de visualização/navegação, as classes do módulo QtNetwork podem ser suficientes.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Qt5xhb tem suporte a navegador?

Mensagempor marcosgambeta » 04 Set 2020 13:33

Com respeito à navegação na internet, este é um exemplo que criei na época em que testei o QtWebEngine:

/*

  Qt5xHb Project - Test Program

  Copyright (C) 2020 Marcos Antonio Gambeta

  E-mail:
  marcosgambeta AT outlook DOT com

  Website:
  https://github.com/marcosgambeta/Qt5xHb

*/

#include "qt5xhb.ch"

PROCEDURE Main ()

   LOCAL oApp
   LOCAL oWindow
   LOCAL oPushButtonHome
   LOCAL oPushButtonBack
   LOCAL oPushButtonForward
   LOCAL oPushButtonReload
   LOCAL oPushButtonStop
   LOCAL oLabel
   LOCAL oLineEdit
   LOCAL oPushButtonGo
   LOCAL oWebEngineView
   LOCAL oUrlHome

   oApp := QApplication():new()

   QtWebEngine():initialize()

   oUrlHome := QUrl():new("http://www.qt.io")

   oWindow := QWidget():new()
   oWindow:setWindowTitle("Navigator")
   oWindow:resize(1024,768)

   // cria os objetos da janela
   oPushButtonHome    := QPushButton():new("Home", oWindow):move(20,20):resize(50,30)
   oPushButtonBack    := QPushButton():new("Back", oWindow):move(70,20):resize(50,30)
   oPushButtonForward := QPushButton():new("Forward", oWindow):move(120,20):resize(50,30)
   oPushButtonReload  := QPushButton():new("Reload", oWindow):move(170,20):resize(50,30)
   oPushButtonStop    := QPushButton():new("Stop", oWindow):move(220,20):resize(50,30)
   oLabel             := QLabel():new("URL:", oWindow):move(270,20):resize(50,30):setAlignment(Qt_AlignCenter)
   oLineEdit          := QLineEdit():new("http://www.qt.io", oWindow):move(320,20):resize(300,30)
   oPushButtonGo      := QPushButton():new("Go", oWindow):move(620,20):resize(50,30)

   oWebEngineView := QWebEngineView():new(oWindow)
   oWebEngineView:move(20,70)
   oWebEngineView:resize(1024-40,768-20-70)

   // configura as ações que serão executadas pelos botões
   oPushButtonHome:onClicked( {||oWebEngineView:load( oUrlHome )} )
   oPushButtonBack:onClicked( {||oWebEngineView:back()} )
   oPushButtonForward:onClicked( {||oWebEngineView:forward()} )
   oPushButtonReload:onClicked( {||oWebEngineView:reload()} )
   oPushButtonStop:onClicked( {||oWebEngineView:stop()} )
   oPushButtonGo:onClicked( {||oWebEngineView:load(QUrl():new(oLineEdit:text()))} )

   // carrega a página se pressionar ENTER no campo de digitação
   oLineEdit:onReturnPressed( {||oWebEngineView:load(QUrl():new(oLineEdit:text()))} )

   // atualiza o título da janela sempre que o título da página mudar
   oWebEngineView:onTitleChanged( {|pSender,cTitle|oWindow:setWindowTitle("Navigator - " + cTitle)} )

   // atualiza o tamanho do objeto QWebEngineView sempre que o tamanho da janela mudar
   oWindow:onResizeEvent( {||oWebEngineView:resize(oWindow:width()-40,oWindow:height()-20-70)} )

   oWindow:show()

   oWebEngineView:load( oUrlHome )

   oApp:exec()

   oWindow:delete()

   oApp:delete()

RETURN


É um mini-navegador com alguns recursos básicos implementados.

Sobre o uso do QtWebEngine no Windows, tem este detalhe: é preciso usar o Qt para MSVC, pois o Chromium não compila com MinGW.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Qt5xhb tem suporte a navegador?

Mensagempor Vlademiro » 04 Set 2020 14:16

Valeu

Teria alguma versão do MSVC específica ? Eu nunca usei o MSVC. Poderia me passar um link ?

Obrigado
Avatar de usuário

Vlademiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 749
Data de registro: 11 Jul 2005 02:46
Curtiu: 22 vezes
Mens.Curtidas: 62 vezes

Qt5xhb tem suporte a navegador?

Mensagempor marcosgambeta » 07 Set 2020 16:33

Vlademiro escreveu:Teria alguma versão do MSVC específica ? Eu nunca usei o MSVC. Poderia me passar um link ?


Estou usando o Visual Studio Community 2019, mas tenho também versões anteriores instaladas.

https://visualstudio.microsoft.com/pt-br/

É preciso instalar as ferramentas de linha de comando (desenvolvimento em C/C++).

Mas vou revisar esta parte, pois dependendo da versão do Qt que usar, poderá precisar de uma versão anterior ao 2019.

A versão mais recente do Qt é a 5.15.0, mas na versão para MSVC, mostrou instabilidade no QtWebEngine. Como é uma versão .0, pode ter passado algum bug que virá corrigido na versão 5.15.1.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes




Retornar para Outras Bibliotecas Visuais e IDEs

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro