gpt4 book ai didi

css - 在 gtk 刻度上更改 slider 大小

转载 作者:太空狗 更新时间:2023-10-29 11:16:56 39 4
gpt4 key购买 nike

我想在 Linux c 程序中更改 Gtk 刻度的 slider 以显示图像。我正在使用 CSS 文件来设置背景图像。图像正在显示,但问题是 slider 太小,无法完整显示图像。

我尝试在 CSS 文件中使用 min-width 和 min-height,但似乎不起作用。

这是我使用的 CSS。 border-radius 和 background-image 起作用,但 min-width 和 min-height 不起作用。

.scale .slider{
min-width: 100px;
min-height: 150px;
border-radius: 0px;
background-image: url("fader.png");
}

编辑:这是将 css 样式应用于 gtk 元素的 C 代码:

...
GtkCssProvider *provider = gtk_css_provider_new ();
gtk_css_provider_load_from_path (provider, "gtktut01.css", NULL);
GtkStyleContext *context;
context = gtk_widget_get_style_context(GTK_WIDGET(window));
gtk_style_context_add_provider (context,GTK_STYLE_PROVIDER(provider),GTK_STYLE_PROVIDER_PRIORITY_USER);

context = gtk_widget_get_style_context(GTK_WIDGET(scale));
gtk_style_context_add_provider (context,GTK_STYLE_PROVIDER(provider),GTK_STYLE_PROVIDER_PRIORITY_USER);

gtk_widget_show_all (GTK_WIDGET(window));
gtk_main ();
...

窗口和比例尺是使用 glade 创建的。

最佳答案

我评论说我之前无法更改旋钮的大小。好吧,我刚刚做了。如果这不是您要问的,请更具体。这是我所做的:

big slider knob with resized image

这是我用 paint 制作的 fader.png:

enter image description here

这是 main.c 的 MWE:

#include <gtk/gtk.h>                                                                                

static void activate(GtkApplication *app, gpointer user_data)
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *scale;
GtkStyleContext *context;
GtkCssProvider *provider;

window = gtk_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(window), "Window");
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
gtk_window_set_default_size(GTK_WINDOW(window), 500, 100);

box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
gtk_container_add(GTK_CONTAINER(window), box);

scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 100, 5);
gtk_container_add(GTK_CONTAINER(box), scale);

provider = gtk_css_provider_new();
gtk_css_provider_load_from_path(provider, "mystyle.css", NULL);

context = gtk_widget_get_style_context(GTK_WIDGET(window));
gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER);

context = gtk_widget_get_style_context(GTK_WIDGET(scale));
gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER);

gtk_widget_show_all(window);
}

int main(int argc, char **argv)
{
GtkApplication *app;
int status;

app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
status = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);

return status;
}

这里是 mystyle.css:

scale slider {                                                                                      
background-image: -gtk-scaled(url("fader.png"));
background-size: 100px 100px;
min-width: 100px;
min-height: 100px;
}

关于css - 在 gtk 刻度上更改 slider 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57325039/

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