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
kodudurtext_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()