GtkScale(2)

GtkScale(1)

📖 接下来继续学习并记录。
从此处简单了解 The Pango Markup Language

这篇学习记录下一相关函数:

GtkWidget *
gtk_scale_new_with_range (GtkOrientation orientation,
                          gdouble min,
                          gdouble max,
                          gdouble step);
void
gtk_scale_set_has_origin (GtkScale *scale,
                          gboolean has_origin);
void // 在value处添加标记
gtk_scale_add_mark (GtkScale *scale,
                    gdouble value,
                    GtkPositionType position, // 标记的位置
                    const gchar *markup); // 这里使用The Pango Markup Language
void
gtk_scale_clear_marks (GtkScale *scale);
PangoLayout *
gtk_scale_get_layout (GtkScale *scale);

例子

#include <gtk/gtk.h>

static GtkWidget *create_window(const gint, const gint);

int main(int argc, char *argv[])
{
	gtk_init(&argc, &argv);

	GtkWidget *window;
	GtkAdjustment *adjustment;
	GtkWidget *scale;

	/// *** Create a Window
	window = create_window(400, 300);
	/// *** 创建一个水平方向、min:0.0、max:10.0、step:1.0的scale
	scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0.0, 10.0, 1.0);
	/// *** 是否显示当前值的标签(字符串)
	gtk_scale_set_draw_value(GTK_SCALE(scale), TRUE);
	/// *** 设置当前值的标签的显示位置 TOP BOTTOM LEFT RIGHT
	gtk_scale_set_value_pos(GTK_SCALE(scale), GTK_POS_TOP);
	/// *** 设置标签值的小数位数
	gtk_scale_set_digits(GTK_SCALE(scale), 2);
	/// *** 设置scale的起点到当前值之间是否具备高光(颜色),默认TRUE
	gtk_scale_set_has_origin(GTK_SCALE(scale), TRUE);
	/// *** 以下函数实现刻度
	gtk_scale_add_mark(GTK_SCALE(scale), 0.0, GTK_POS_BOTTOM, "<span color='red'>0</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 1.0, GTK_POS_BOTTOM, "<span color='red'>1</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 2.0, GTK_POS_BOTTOM, "<span color='red'>2</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 3.0, GTK_POS_BOTTOM, "<span color='red'>3</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 4.0, GTK_POS_BOTTOM, "<span color='red'>4</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 5.0, GTK_POS_BOTTOM, "<span color='red'>5</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 6.0, GTK_POS_BOTTOM, "<span color='red'>6</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 7.0, GTK_POS_BOTTOM, "<span color='red'>7</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 8.0, GTK_POS_BOTTOM, "<span color='red'>8</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 9.0, GTK_POS_BOTTOM, "<span color='red'>9</span>");
	gtk_scale_add_mark(GTK_SCALE(scale), 10.0, GTK_POS_BOTTOM, "<span color='red'>10</span>");
	/// *** 清除刻度
	// gtk_scale_clear_marks(GTK_SCALE(scale));
	/// *** 这些操作没报错 但是pango不起作用 不知道是不是版本问题....
	PangoLayout *layout = gtk_scale_get_layout(GTK_SCALE(scale));
	const char *const markup = "<span color='red'>1.00</span>";
	pango_layout_set_markup(layout, markup, strlen(markup));

	gtk_container_add(GTK_CONTAINER(window), scale);

	gtk_widget_show_all(window);
	gtk_main();
}

static GtkWidget *create_window(const gint w, const gint h)
{
	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
	gtk_window_set_default_size(GTK_WINDOW(window), w, h);
	gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
	gtk_window_set_title(GTK_WINDOW(window), "Hello GTK3");
	gtk_container_set_border_width(GTK_CONTAINER(window), 50);

	return window;
}
  • 运行效果
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值