3

我正在尝试创建一个简单的应用程序,通过 Qt 用 Ruby 编写。我在 Qt Designer 中设计了一个表单 (MainForm),并将其转换rbuic4为 Ruby 代码表示。纯未修改的结果有四种方法,如下所示:

=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

主要想法是创建一个 Ruby-Qt 应用程序,用 GUI 运行我的小型 Rub​​y 应用程序——因为现在我不需要 Qt 库的所有功能。

我知道这个很好的例子,但它展示了为 .ui 文件生成的不同代码。还是他们设法以某种方式改变了它?无论如何,他们的例子工作正常,而我不能让我自己的工作正常。

我只是不知道如何处理我生成的文件,如何更进一步并与我的 Ruby 程序建立连接......也许我rbuic4错了?还是我正在使用不正确的选项(我是一个-o选项)运行它以获得类似蛛网膜的模板?

4

2 回答 2

3

对代码进行实际操作的最简单方法是像这样重新生成它:

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

比像这样运行生成的 stackover.ui.rb 文件:

ruby stackover.ui.rb

希望能帮助到你。

于 2010-06-29T17:03:28.903 回答
0

好吧,好吧。至于我找不到提到的生成文件的确切用途,我决定复制粘贴组件 init。代码到另一个 Ruby-Qt 模板应用程序,对我来说一切都很清楚。因此,QtDesignerrbui4仅适用于快速表单设计/翻译,随后应进行所有必需的手动抛光。

等待更新版本rbuic4的 Qt 和 QtRuby 支持紧急版本的 Qt。

于 2009-11-26T09:26:13.973 回答