gpt4 book ai didi

mono - 在 Mono/GTK 中创建可关闭的选项卡

转载 作者:行者123 更新时间:2023-12-04 06:55:44 28 4
gpt4 key购买 nike

我正在尝试使用以下代码创建包含名称(作为标签)和关闭按钮(作为带有图像的按钮)的新 GTK Notebook 选项卡:

Label headerLabel = new Label();
headerLabel.Text = "Header";
HBox headerBox = new HBox();
Button closeBtn = new Button();
Image closeImg = new Image(Stock.Close, IconSize.Menu);

closeBtn.Image = closeImg;
closeBtn.Relief = ReliefStyle.None;

headerBox.Add(headerLabel);
headerBox.Add(closeBtn);
headerBox.ShowAll();

MyNotebook.AppendPage(childWidget, headerBox);

这似乎工作得很好;但是,按钮大约是需要大小的 1.5 - 2 倍,因此按钮内部的图像周围有很多额外的空间。看过 remove inner border on gtk.Button我现在看到罪魁祸首是 GtkButton 的“内边框”样式属性,但是(对 GTK 不熟悉)我似乎无法弄清楚如何覆盖它的值。

有什么方法可以做到这一点,我想念吗?我对不使用按钮/图像组合没有任何保留,因此欢迎任何更明显的建议。

注意:我在链接问题中看到了使用 EventBox 的建议,但我无法将浮雕和鼠标悬停效果添加到该小部件。

最佳答案

你很幸运。我昨天刚做了一模一样的东西,幸运的是可以给你一些代码。诀窍是创建一个 自定义标签小部件 .

public class MultiTab : Gtk.Box
{
public Gtk.Label Caption;
Gtk.Image img = new Gtk.Image(Platform.IMG + "tab_close.ico");
public Gtk.ToolButton Close;
public Gtk.Notebook _parent;

public MultiTab ( string name )
{
CreateUI(name);
}

public MultiTab(string name, Gtk.Notebook parent)
{
_parent = parent;
CreateUI(name);
CreateHandlers();
}

void CreateUI(string name)
{
Caption = new Gtk.Label(name);
Close = new Gtk.ToolButton(img,"");
PackStart( Caption );
PackStart( Close );
ShowAll();
Close.Hide();
}

void CreateHandlers()
{
Close.Clicked += delegate {
_parent.RemovePage(_parent.CurrentPage);
};
}

public bool Active;

}
接下来你要做的就是在 Gtk.Notebook 中使用这个小部件(或由你创建的类似小部件),如下所示:
   MyNoteBook.AppendPage(new <YourPage>(), new MultiTab("<your caption>",this));
你已经完成了。
这是一个屏幕截图:
Program with Close-able Tab

关于mono - 在 Mono/GTK 中创建可关闭的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com