В качестве experiemnt я расширив класс Gtk.HeaderBar в Vala, как это, для того, чтобы иметь кнопку вместо названия/Labels субтитров:Переопределение методов в Vala
using Gtk;
public class WebBrowserHeaderBar : HeaderBar {
private Button title_widget;
public WebBrowserHeaderBar(){
this.show_close_button = true;
title_widget = new Button.with_label("title");
this.set_custom_title(title_widget);
}
public void set_title(string title){
title_widget.label = title;
}
}
, а затем я м, используя его как это:
public class MainWindow: Window {
private WebBrowserHeaderBar header;
public MainWindow() {
//this.title = MyWeb.APP_TITLE;
this.window_position = WindowPosition.CENTER;
this.destroy.connect (Gtk.main_quit);
set_default_size (300, 200);
header = new WebBrowserHeaderBar();
header.set_title (MyWeb.APP_TITLE);
this.set_titlebar(header);
}
}
это работает, но я получаю следующее предупреждение при компиляции:
WebBrowserHeaderBar.vala:15.2-15.22: warning: WebBrowserHeaderBar.set_title hides inherited method `Gtk.HeaderBar.set_title'. Use the `new' keyword if hiding was intentional
public void set_title(string title){
^^^^^^^^^^^^^^^^^^^^^
Compilation succeeded - 1 warning(s)
Если я изменить способ, как этот public override void set_title(string title){
, он не будет компилироваться:
WebBrowserHeaderBar.vala:15.2-15.31: error: WebBrowserHeaderBar.set_title: no suitable method found to override
public override void set_title(string title){
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)
Почему я получаю это? Как я могу избавиться от предупреждения и/или успешно переопределить метод set_title
?
Это очень ясно, спасибо! – lviggiani