【发布时间】:2014-10-31 10:20:09
【问题描述】:
作为一个实验,我正在像这样在 vala 中扩展 Gtk.HeaderBar 类,以便有一个 Button 而不是标题/副标题标签:
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 方法?
【问题讨论】: