<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 菜單和工具欄 > 原文: [http://zetcode.com/gui/rubyqt/menustoolbars/](http://zetcode.com/gui/rubyqt/menustoolbars/) 在 Ruby Qt 編程教程的這一部分中,我們將使用菜單和工具欄。 菜單欄是 GUI 應用中最可見的部分之一。 它是位于各個菜單中的一組命令。 在控制臺應用中,您必須記住所有這些神秘命令,在這里,我們將大多數命令分組為邏輯部分。 有公認的標準可以進一步減少學習新應用的時間。 菜單將我們可以在應用中使用的命令分組。 使用工具欄可以快速訪問最常用的命令。 ## 簡單菜單 第一個示例將顯示一個簡單的菜單。 ```rb #!/usr/bin/ruby # ZetCode Ruby Qt tutorial # # This program shows a simple # menu. It has one action, which # will terminate the program, when # selected. # # author: Jan Bodnar # website: www.zetcode.com # last modified: November 2012 require 'Qt' class QtApp < Qt::MainWindow def initialize super setWindowTitle "Simple menu" init_ui resize 250, 150 move 300, 300 show end def init_ui quit = Qt::Action.new "&Quit", self file = menuBar().addMenu "&File" file.addAction quit connect(quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()")) end end app = Qt::Application.new ARGV QtApp.new app.exec ``` 我們有一個菜單欄,一個菜單和一個動作。 為了使用菜單,我們必須繼承`MainWindow`小部件。 ```rb quit = Qt::Action.new "&Quit", self ``` 此代碼行創建一個`Action`。 每個`Menu`具有一個或多個動作對象。 注意 AND 字符(`&`)。 它為以下項目創建快捷方式: `Alt + Q` 。 它還強調了`Q`字符。 下拉菜單中的文件時,該快捷方式處于活動狀態。 ```rb file = menuBar().addMenu "&File" file.addAction quit ``` 我們創建一個`Menu`對象。 &字符創建快捷方式: `Alt + F` 。 連續的快捷鍵 `Alt + F` , `Alt + Q` 退出了應用。 ```rb connect(quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()")) ``` 當我們從菜單中選擇此選項時,應用退出。 ![Simple menu](https://img.kancloud.cn/58/5f/585fe398e268a0f51ad631a45d265f27_252x176.jpg) 圖:簡單菜單 ## 子菜單 子菜單是插入另一個菜單對象的菜單。 下一個示例對此進行了演示。 ```rb #!/usr/bin/ruby # ZetCode Ruby Qt tutorial # # This program creates a # submenu # # author: Jan Bodnar # website: www.zetcode.com # last modified: November 2012 require 'Qt' class QtApp < Qt::MainWindow def initialize super setWindowTitle "Submenu" init_ui resize 280, 200 move 300, 300 show end def init_ui quit = Qt::Action.new "&Quit", self file = menuBar().addMenu "&File" impm = Qt::Menu.new "Import" seeds = Qt::Action.new "Import news feed...", self marks = Qt::Action.new "Import bookmarks...", self mail = Qt::Action.new "Import mail...", self impm.addAction seeds impm.addAction marks impm.addAction mail file.addMenu impm file.addAction quit connect(quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()")) end end app = Qt::Application.new ARGV QtApp.new app.exec ``` 在示例中,文件菜單的子菜單中有三個選項。 ```rb file = menuBar().addMenu "&File" impm = Qt::Menu.new "Import" ``` 我們有兩個`Menu`對象。 文件菜單和導入菜單。 ```rb seeds = Qt::Action.new "Import news feed...", self marks = Qt::Action.new "Import bookmarks...", self mail = Qt::Action.new "Import mail...", self ``` 我們創建三個動作對象。 ```rb impm.addAction seeds impm.addAction marks impm.addAction mail ``` 我們將動作對象添加到導入菜單中。 ```rb file.addMenu impm ``` 最后,我們將導入菜單添加到文件菜單中。 ![Submenu](https://img.kancloud.cn/5d/98/5d986c68da399179f2cc1586d35de5b9_282x226.jpg) 圖:子菜單 ## 圖像,菜單,分隔符 在以下示例中,我們將進一步增強以前的應用。 我們將在菜單中添加圖標,使用快捷方式和分隔符。 請注意,默認情況下,可能會將 Gnome 桌面配置為不顯示菜單圖標。 在這種情況下,我們需要在 Gnome 接口配置中啟用`menu_have_icons`選項。 ```rb gconftool-2 --type Boolean --set /desktop/gnome/interface/menus_have_icons True ``` 我們可以使用上面的命令或`gconf-editor`工具。 ```rb #!/usr/bin/ruby # ZetCode Ruby Qt tutorial # # This program shows image # menus, shortcuts and a separator # # author: Jan Bodnar # website: www.zetcode.com # last modified: November 2012 require 'Qt' class QtApp < Qt::MainWindow def initialize super setWindowTitle "Image menu" init_ui resize 280, 200 move 300, 300 show end def init_ui newpix = Qt::Icon.new "new.png" openpix = Qt::Icon.new "open.png" quitpix = Qt::Icon.new "exit.png" newa = Qt::Action.new newpix, "&New", self open = Qt::Action.new openpix, "&Open", self quit = Qt::Action.new quitpix, "&Quit", self quit.setShortcut "Ctrl+Q" file = menuBar().addMenu "&File" file.addAction newa file.addAction open file.addSeparator file.addAction quit connect(quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()")) end end app = Qt::Application.new ARGV QtApp.new app.exec ``` 在我們的示例中,我們有一個包含三個動作的菜單。 如果我們選擇退出操作,則實際上只有退出操作才可以執行某些操作。 我們還創建了分隔符和 `Ctrl + Q` 快捷方式,它們將終止應用。 ```rb newpix = Qt::Icon.new "new.png" openpix = Qt::Icon.new "open.png" quitpix = Qt::Icon.new "exit.png" ``` 這些是我們將在應用中使用的 PNG 圖像。 ```rb newa = Qt::Action.new newpix, "&New", self open = Qt::Action.new openpix, "&Open", self quit = Qt::Action.new quitpix, "&Quit", self ``` 在這里,我們創建三個動作對象。 第一個參數是`Icon`。 ```rb quit.setShortcut "Ctrl+Q" ``` 這行創建一個快捷方式。 通過按下此快捷方式,我們將運行退出操作,這將退出應用。 ```rb file.addSeparator ``` 我們創建一個分隔符。 分隔符是一條水平線,它使我們能夠將菜單操作分組為一些邏輯部分。 ![Images, shortcut and a separator](https://img.kancloud.cn/b1/9f/b19f3f10cdb55e82c9da4ed2b63a27f8_282x226.jpg) 圖:圖像 s, shortcut and a separator ## 工具欄 `ToolBar`類提供了一個可移動面板,其中包含一組控件,這些控件提供對應用操作的快速訪問。 ```rb #!/usr/bin/ruby # ZetCode Ruby Qt tutorial # # This program creates a # toolbar # # author: Jan Bodnar # website: www.zetcode.com # last modified: November 2012 require 'Qt' class QtApp < Qt::MainWindow def initialize super setWindowTitle "Toolbar" init_ui resize 250, 150 move 300, 300 show end def init_ui newpi = Qt::Icon.new "new2.png" openpi = Qt::Icon.new "open2.png" quitpi = Qt::Icon.new "exit2.png" toolbar = addToolBar "main toolbar" toolbar.addAction newpi, "New File" toolbar.addAction openpi, "Open File" toolbar.addSeparator quit = toolbar.addAction quitpi, "Quit Application" connect(quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()")) end end app = Qt::Application.new ARGV QtApp.new app.exec ``` 我們創建一個帶有三個動作對象和一個分隔符的工具欄。 ```rb newpi = Qt::Icon.new "new2.png" openpi = Qt::Icon.new "open2.png" quitpi = Qt::Icon.new "exit2.png" ``` 工具欄動作對象將顯示這些圖標。 ```rb toolbar = addToolBar "main toolbar" ``` `MainWindow`的`addToolBar`方法為應用創建一個工具欄。 文本字符串為工具欄命名。 此名稱用于引用此工具欄,因為一個應用中可以有多個工具欄。 如果右鍵單擊窗口區域,我們將看到一個可檢查的選項,該選項顯示或隱藏工具欄。 ```rb toolbar.addSeparator ``` 我們創建一個垂直分隔符。 ```rb connect(quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()")) ``` 當我們單擊退出操作對象時,應用終止。 ![Toolbar](https://img.kancloud.cn/a4/29/a429b54591b8af190f7ae1534e713faa_252x176.jpg) 圖:工具欄 ## 撤銷重做 以下示例演示了如何停用工具欄上的工具欄按鈕。 這是 GUI 編程中的常見做法。 例如,保存按鈕。 如果我們將文檔的所有更改都保存到磁盤上,則在大多數文本編輯器中,“保存”按鈕將被停用。 這樣,應用會向用戶指示所有更改都已保存。 ```rb #!/usr/bin/ruby # ZetCode Ruby Qt tutorial # # This program disables/enables # actions on a toolbar # # author: Jan Bodnar # website: www.zetcode.com # last modified: November 2012 require 'Qt' class QtApp < Qt::MainWindow slots 'count()' def initialize super setWindowTitle "Toolbar" init_ui resize 250, 150 move 300, 300 show end def init_ui @count = 2 undoi = Qt::Icon.new "undo.png" redoi = Qt::Icon.new "redo.png" quitpi = Qt::Icon.new "quit.png" toolbar = addToolBar "first toolbar" @und = toolbar.addAction undoi, "Undo" @red = toolbar.addAction redoi, "Redo" connect @und, SIGNAL("triggered()"), self, SLOT("count()") connect @red, SIGNAL("triggered()"), self, SLOT("count()") toolbar.addSeparator quit = toolbar.addAction quitpi, "Quit Application" connect quit, SIGNAL("triggered()"), Qt::Application.instance, SLOT("quit()") end def count action = sender if "Undo" == action.text @count = @count - 1 else @count = @count + 1 end if @count <= 0 @und.setDisabled true @red.setDisabled false end if @count >= 5 @und.setDisabled false @red.setDisabled true end end end app = Qt::Application.new ARGV QtApp.new app.exec ``` 在我們的示例中,我們有三個`Action`對象和一個分隔符。 在撤消或重做按鈕上單擊幾下后,它們將被停用。 外觀上,按鈕顯示為灰色。 ```rb @count = 2 ``` `@count`變量確定哪個按鈕被激活和禁用。 ```rb connect @und, SIGNAL("triggered()"), self, SLOT("count()") connect @red, SIGNAL("triggered()"), self, SLOT("count()") ``` 單擊工具欄按鈕,將發射`triggered`信號。 我們將此信號連接到`count`方法。 ```rb action = sender ``` 工具欄上的兩個按鈕都調用`count`方法。 我們需要在它們之間說出來。 這條線確定哪個動作對象實際發出信號。 ```rb if "Undo" == action.text @count = @count - 1 else @count = @count + 1 end ``` 撤消工具欄按鈕從計數變量中減去 1。 重做添加 1.根據計數變量的值,我們啟用或禁用工具欄按鈕。 ```rb if @count <= 0 @und.setDisabled true @red.setDisabled false end ``` `setDisabled`方法激活或停用工具欄按鈕。 ![Undo redo](https://img.kancloud.cn/50/98/50984fb85d5629830bcec6f5d610874c_252x176.jpg) 圖:撤銷和重做 在 Ruby Qt 教程的這一部分中,我們提到了菜單和工具欄。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看