作者godfat (godfat 真常)
看板Ruby
標題Re: [問題] 請問qtruby有無refenrence document
時間Sun Jun 1 15:39:52 2008
: 推 godfat:就我所知,好像沒有很完整的 ref, 我自己也是看 c++ 那份 05/30 22
: → godfat:基本上幾乎一樣啦,湊合著用吧 @_@b 05/30 22
: → Romulus:首先我不知道QMenu的triggerer(QAction) SLOT在ruby 06/01 00
: → Romulus:要怎麼寫 orz 只能遇一次問一次?(汗) 06/01 00
: → Romulus:試過triggered(Qt:Action)和(QAction)和(Action)都不行 06/01 00
先參考這裡:
http://techbase.kde.org/Development/Languages/Ruby
然後你說的 SLOT, 應該是指 signal 吧?signal 是主動端,
是發出事件的那個人。
基本上 QtRuby 的 binding 都是一對一對應,沒有依照 ruby 特性改寫什麼,
所以... connect 是這樣寫:
win.connect menu, SIGNAL('triggered(QAction*)'), game, SLOT('menu(QAction*)')
那個 * 什麼的都要保留。而且也不能用 ruby 的 Qt::xxx 的名稱,要用原本的 Qxxx
給你看完整測試程式:
require 'Qt4'
class Game < Qt::Object
slots 'menu(QAction*)' # 這邊其實也可以用 symbol, 不過就不能有參數的樣子
def menu action
Qt::MessageBox::about Qt::Application.instance.activeModalWidget,
# activeModalWidget 就是抓現在 on focus 那個 widget
'menu?', action.iconText
end
end
app = Qt::Application.new ARGV
game = Game.new
win = Qt::MainWindow.new
menu = Qt::Menu.new 'say'
menu.addAction 'XD'
win.menuBar.addMenu menu
win.connect menu, SIGNAL('triggered(QAction*)'), game, SLOT('menu(QAction*)')
win.show
app.exec
所以這樣寫就是按下 XD 的時候,會跳出訊息 XD
--
『風車』が廻り続ける度に 『美しき』幻想が静かに紡がれ
『焔』の揺らめきの外に 『腕』を伸ばす愚かな者達 -《Roman》5th Story
『宝石』をより多く掴もうと 『朝と夜』の狭間を彷徨い続ける Track 10
『星屑』の砂の煌めきにも 『葡萄酒』の仄甘い陶酔を魅せ 黄昏の賢者
『賢者』が忌避する檻の中から 『伝言』の真意を彼等に問うだろう
『天使』が别れを告げし時 『地平線』は第五の物語を識る
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.28.18
推 Romulus:感謝!m(_ _)m 請問沒有reference你怎麼學的啊?囧> 06/02 09:30
→ godfat:trial & error :p 久了就會知道怎麼試機率比較高 XD 06/02 10:37
推 Romulus:瞭解 orz Qt Designer已經沒有提供下載了嗎 06/02 10:54
→ godfat:我不知道有沒有分開下載的,我灌 Qt 本身時就有附 06/02 11:28
推 Romulus:我是win32版的不知如何啟動……先自己慢慢刻好了 06/02 11:36
→ godfat:以前用的時候,開始=>附屬應用程式=>Qt 裡面會有捷徑 06/02 11:52