Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:在Qt中创建一个简单的应用程序_Ruby_User Interface_Qt_Qtruby - Fatal编程技术网

Ruby:在Qt中创建一个简单的应用程序

Ruby:在Qt中创建一个简单的应用程序,ruby,user-interface,qt,qtruby,Ruby,User Interface,Qt,Qtruby,我试图创建一个简单的应用程序,通过Qt用Ruby编写。我在Qt设计器中设计了一个表单(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

我试图创建一个简单的应用程序,通过Qt用Ruby编写。我在Qt设计器中设计了一个表单(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
rbuic4 -x stackover.ui -o stackover.ui.rb
ruby stackover.ui.rb
=开始
**从读取ui文件“stackover.ui”生成的表单
**
**创建:П'С'24。РЅРѕСЏ 21:15:02 2009
**作者:Qt用户界面编译器版本4.3.1
**
**警告!重新编译ui文件时,此文件中所做的所有更改都将丢失!
=结束
类Ui_主窗口
属性读取器:centralwidget
属性读取器:按钮
属性读取器:列表视图
属性读取器:菜单栏
属性读取器:状态栏
def设置UI(主窗口)
mainWindow.setObjectName(“mainWindow”)
@centralwidget=Qt::Widget.new(主窗口)
@setObjectName(“centralwidget”)
@按钮=Qt::按钮.new(@centralwidget)
@按钮。setObjectName(“按钮”)
@按钮设置几何体(Qt::矩形新(10,10,75,23))
@listView=Qt::listView.new(@centralwidget)
@setObjectName(“listView”)
@setGeometry(Qt::Rect.new(10,40,431,192))
mainWindow.setCentralWidget(@centralwidget)
@menubar=Qt::menubar.new(主窗口)
@menubar.setObjectName(“menubar”)
@menubar.setGeometry(Qt::Rect.new(0,0,451,21))
main window.setMenuBar(@menubar)
@statusbar=Qt::statusbar.new(主窗口)
@statusbar.setObjectName(“statusbar”)
main window.setStatusBar(@statusbar)
重传(主窗口)
size=Qt::size.new(451276)
size=size.expandedTo(mainWindow.minimumSizeHint())
主窗口。调整大小(大小)
Qt::MetaObject.connectSlotsByName(主窗口)
结束#设置UI
def设置界面(主窗口)
setupUi(主窗口)
结束
def重新传输(主窗口)
setWindowTitle(Qt::Application.translate(“mainWindow”、“mainWindow”、nil、Qt::Application::UnicodeUTF8))
@setText(Qt::Application.translate(“主窗口”,“按钮”,nil,Qt::Application::UnicodeUTF8))
结束#重新翻译
def重新传输_ui(主窗口)
重传(主窗口)
结束
结束
模块用户界面
类主窗口
主要的想法是创建一个RubyQT应用程序,用GUI运行我的小Ruby应用程序——现在我不需要Qt库的所有功能

我知道有一个很好的例子,但它展示了为.ui文件生成的不同代码。还是他们设法改变了?不管怎么说,他们的例子很好用,而我不能让我自己的工作正常


我只是不知道如何处理生成的文件,如何进一步连接Ruby程序。。。也许我的
rbuic4
错了?或者我是用不正确的选项运行它(我是一个
-o
选项)来获得类似的模板吗?

好的,好的。由于我找不到上述生成文件的确切用途,我决定复制粘贴组件init。另一个RubyQT模板应用程序的代码,其中的一切对我来说都很清楚。因此,QtDesigner和rbui4仅对快速表单设计/翻译有用,随后应进行所有必要的手动抛光


等待更新版本的
rbuic4
和QtRuby对紧急版本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
rbuic4 -x stackover.ui -o stackover.ui.rb
ruby stackover.ui.rb
然后按如下方式运行生成的stackover.ui.rb文件:

=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
rbuic4 -x stackover.ui -o stackover.ui.rb
ruby stackover.ui.rb
希望能有帮助