2016-04-09 20 views
1

Basit bir ToolButton oluştururken, clicked.connect arayüzünü Toolbar example from the Vala guide'da olduğu gibi kullanabilirsiniz. HeaderBar'a bir düğme ekleme arabirimi, bu örnekte gösterilene benzer. Ancak, tıklanan bağlantıyı ele alma şekli farklı görünmektedir (veya eksik olduğum bir şey var). Aşağıdaki örnek, açık bir iletişim düğmesinin HeaderBar içine yerleştirildiği küçük bir metin editöründendir. Clicked.connection sözdizimi, ancak bir hata döndürür. derlenmesini,ToolButton tıklatılmış sinyali nasıl kullanılır (HeaderBar'da)?

[indent=4] 
uses 
    Gtk 

init 
    Gtk.init (ref args) 

    var app = new Application() 
    app.show_all() 
    Gtk.main() 

// This class holds all the elements from the GUI 
class Application : Gtk.Window 

    _view:Gtk.TextView 

    construct() 

     // Prepare Gtk.Window: 
     this.window_position = Gtk.WindowPosition.CENTER 
     this.destroy.connect (Gtk.main_quit) 
     this.set_default_size (400, 400) 


     // Headerbar definition 
     headerbar:Gtk.HeaderBar = new Gtk.HeaderBar() 
     headerbar.show_close_button = true 
     headerbar.set_title("My text editor") 

     // Headerbar buttons 
     open_button:Gtk.ToolButton = new ToolButton.from_stock(Stock.OPEN) 
     open_button.clicked.connect (openfile) 

     // Add everything to the toolbar 
     headerbar.pack_start (open_button) 
     show_all() 
     this.set_titlebar(headerbar) 

     // Box: 
     box:Gtk.Box = new Gtk.Box (Gtk.Orientation.VERTICAL, 1) 
     this.add (box) 

     // A ScrolledWindow: 
     scrolled:Gtk.ScrolledWindow = new Gtk.ScrolledWindow (null, null) 
     box.pack_start (scrolled, true, true, 0) 

     // The TextView: 
     _view = new Gtk.TextView() 
     _view.set_wrap_mode (Gtk.WrapMode.WORD) 
     _view.buffer.text = "Lorem Ipsum" 
     scrolled.add (_view) 

open_button.clicked.connect döner: Burada

kodudur

text_editor-exercise_7_1.gs:134.32-134.39: error: Argument 1: Cannot convert from `Application.openfile' to `Gtk.ToolButton.clicked' 
     open_button.clicked.connect (openfile) 

mu biri HeaderBar widget'ı kullandığında o sinyal değişiklikleri işleme yolu?

Kod yorumlandığı sürece kod çalışıyor (openfile işlevi için bir stub eklemek isteyebilirsiniz). Hata Yukarıda ekli vücutta aslında değildi çünkü

Teşekkür

GÜNCELLEME

Bu soru, bir güncelleme hak ediyor.

Hata, işlevin tanımındaydı. Yazdığım:

def openfile (self:Button) 

yerine vermeliydim Ne zaman: basitçe

def openfile (self:ToolButton) 

Veya: Kodunuzdaki tıklama işleyicisi içermiyordu

def openfile() 

cevap

1

, bu örnek saplama kullanılarak Sadece iyi çalışır:

def openfile() 
    warning ("Button clicked") 

Bu yüzden, tıklama işleyicinizin tip imzasının yanlış olduğunu ve derleyicinin bu yüzden şikayetçi olduğunu düşünüyorum.

İlgili konular