È possibile utilizzare i renderer HTML di RubyGnome2 / QtRuby per rendere l'interfaccia utente per uno script Ruby?

3

Mi piacerebbe creare un'interfaccia grafica per il mio script, invece di eseguirlo dalla console. Sono consapevole che ci sono un sacco di librerie UI per Ruby, ma ho una certa familiarità con HTML e CSS e mi piacerebbe usarle per costruire un'interfaccia. Quindi la domanda è:

È possibile utilizzare una libreria di rendering HTML per creare una tale interfaccia utente? Da quanto ho capito, è relativamente facile inserire una visualizzazione HTML resa di qualcosa, ma è possibile comunicare di nuovo con lo script? Come quando spingo quel grosso pulsante rosso, in realtà dice alla sceneggiatura di agire su di esso? Ovviamente è possibile se lo script viene eseguito sul lato server, ma mi piacerebbe eseguirlo come applicazione desktop.

    
posta mjr 30.07.2012 - 01:41
fonte

1 risposta

2

Qt ha un modulo Webkit. Dovresti essere in grado di creare un'interfaccia utente usando quelli per fare ciò che vuoi.

Ecco un esempio di una pagina dinamica che utilizza QtRuby

require 'Qt4'
require 'qtwebkit'

class A < Qt::WebView
  slots 'mySlot(QUrl)'
  def initialize()
super()
connect(self, SIGNAL('linkClicked(QUrl)'), self, SLOT('mySlot(QUrl)'))
  end
  def mySlot(url)
if (url.path == 'quit')
  puts "quit"
  exit()
elsif (url.path == 'cont')
  setHtml <<EOP
<html>
 <head>
  <title>test</title>
 </head>
 <body>
  <div>
This is a test. That works</br>
<h2><a id='click' href="quit" onclick="quit()">Quit</a></h2>
  </div>
 </body>
</html>
EOP
 end
  end
end

Qt::Application.new(ARGV) do
   A.new() do |view|
view.page.setLinkDelegationPolicy(Qt::WebPage::DelegateAllLinks)
view.setHtml <<EOP
<html>
 <head>
  <title>test</title>
 </head>
 <body>
  <div>
This is a test.</br>
<a id='click' href="quit" onclick="quit()">quit</a>
<a id='click' href="cont" onclick="quit()">Click on me!</a>
  </div>
 </body>
</html>
EOP
view.show
  end
  exec
end

L'unico lato negativo è che, nella maggior parte dei casi, dovrai leggere la documentazione di Qt C ++ e convertirla in Ruby. Almeno questa è la mia esperienza.

link

link

    
risposta data 17.09.2012 - 16:41
fonte

Leggi altre domande sui tag