2009-11-24 3 views
3

J'essaie de créer une application simple, écrite en Ruby via Qt. J'ai conçu un formulaire (MainForm) dans un concepteur Qt et l'ai traduit via rbuic4 à la représentation du code Ruby. Le résultat intact, pur a quatre méthodes, et ressemble à ceci:Ruby: créer une application simple en Qt

=begin 
** Form generated from reading ui file 'stackover.ui' 
** 
** Created: Р’С‚ 24. РЅРѕСЏ 21:15:02 2009 
**  by: Qt User Interface Compiler version 4.3.1 
** 
** WARNING! All changes made in this file will be lost when recompiling ui file! 
=end 

class Ui_MainWindow 
    attr_reader :centralwidget 
    attr_reader :pushButton 
    attr_reader :listView 
    attr_reader :menubar 
    attr_reader :statusbar 

    def setupUi(mainWindow) 
    mainWindow.setObjectName("mainWindow") 
    @centralwidget = Qt::Widget.new(mainWindow) 
    @centralwidget.setObjectName("centralwidget") 
    @pushButton = Qt::PushButton.new(@centralwidget) 
    @pushButton.setObjectName("pushButton") 
    @pushButton.setGeometry(Qt::Rect.new(10, 10, 75, 23)) 
    @listView = Qt::ListView.new(@centralwidget) 
    @listView.setObjectName("listView") 
    @listView.setGeometry(Qt::Rect.new(10, 40, 431, 192)) 
    mainWindow.setCentralWidget(@centralwidget) 
    @menubar = Qt::MenuBar.new(mainWindow) 
    @menubar.setObjectName("menubar") 
    @menubar.setGeometry(Qt::Rect.new(0, 0, 451, 21)) 
    mainWindow.setMenuBar(@menubar) 
    @statusbar = Qt::StatusBar.new(mainWindow) 
    @statusbar.setObjectName("statusbar") 
    mainWindow.setStatusBar(@statusbar) 

    retranslateUi(mainWindow) 

    size = Qt::Size.new(451, 276) 
    size = size.expandedTo(mainWindow.minimumSizeHint()) 
    mainWindow.resize(size) 


    Qt::MetaObject.connectSlotsByName(mainWindow) 
    end # setupUi 

    def setup_ui(mainWindow) 
     setupUi(mainWindow) 
    end 

    def retranslateUi(mainWindow) 
    mainWindow.setWindowTitle(Qt::Application.translate("MainWindow", "MainWindow", nil, Qt::Application::UnicodeUTF8)) 
    @pushButton.setText(Qt::Application.translate("MainWindow", "PushButton", nil, Qt::Application::UnicodeUTF8)) 
    end # retranslateUi 

    def retranslate_ui(mainWindow) 
     retranslateUi(mainWindow) 
    end 

end 

module Ui 
    class MainWindow < Ui_MainWindow 
    end 
end # module Ui 

L'idée principale est de créer une application Ruby-Qt, pour exécuter ma petite applications Ruby avec une interface graphique - que pour l'instant je ne pas besoin de tout la puissance de la bibliothèque Qt.

Je suis au courant de this excellent exemple, mais il montre un code généré différent pour le fichier .ui. Ou ont-ils réussi à le modifier d'une manière ou d'une autre? Quoi qu'il en soit, leur exemple fonctionne bien, alors que je ne peux pas faire fonctionner le mien correctement. Je ne sais pas quoi faire avec mon fichier généré, comment aller plus loin et établir une connexion avec mon programme Ruby ... Peut-être que mon rbuic4 est faux? Ou suis-je en cours d'exécution avec des options incorrectes (je suis une option -o) pour obtenir le modèle arachnoid-like?

Répondre

0

Bien, OK. Dans la mesure où je ne trouve pas l'utilisation exacte du fichier généré mentionné, j'ai décidé de copier-coller le composant init. code à une autre application de modèle Ruby-Qt, où tout est clair pour moi. Ainsi, QtDesigner et rbui4 ne sont utiles que pour la conception/traduction rapide de formulaire, qui devrait ensuite être suivie de tout polissage manuel requis.

En attente d'une nouvelle version de rbuic4 et QtRuby support de la version urgente de Qt.

3

La meilleure façon de faire quelque chose avec votre code est de régénérer comme ceci:

rbuic4 -x stackover.ui -o stackover.ui.rb 

que de courir le fichier stackover.ui.rb généré comme ceci:

ruby stackover.ui.rb 

espère que ce aide.

Questions connexes