在 gtk 刻度上更改滑块大小
Changing slider size on a gtk scale
我想在 Linux c 程序中更改 Gtk 标尺的滑块以显示图像。
我正在使用 CSS 文件来设置背景图像。
图片显示出来了,但问题是滑块太小,无法完整显示图片。
我尝试在 CSS 文件中使用最小宽度和最小高度,但它似乎不起作用。
这是我用过的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 ();
...
window 和比例尺是使用 glade 创建的。
我评论说我之前无法更改旋钮的大小。好吧,我刚刚做了。如果这不是您要问的,请更具体。这是我所做的:
这是我用油漆制作的fader.png
:
这是 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 中进行。对于我使用 .glade gtk 和 python
的项目,我用这个 CSS 解决了这个问题
scale slider{
min-width: 100px;
min-height: 150px;
}
或以下用于 id 为 sliderID
的单个 gtkslider
scale#sliderID slider{
min-width: 100px;
min-height: 150px;
}
我想在 Linux c 程序中更改 Gtk 标尺的滑块以显示图像。 我正在使用 CSS 文件来设置背景图像。 图片显示出来了,但问题是滑块太小,无法完整显示图片。
我尝试在 CSS 文件中使用最小宽度和最小高度,但它似乎不起作用。
这是我用过的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 ();
...
window 和比例尺是使用 glade 创建的。
我评论说我之前无法更改旋钮的大小。好吧,我刚刚做了。如果这不是您要问的,请更具体。这是我所做的:
这是我用油漆制作的fader.png
:
这是 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 中进行。对于我使用 .glade gtk 和 python
的项目,我用这个 CSS 解决了这个问题scale slider{
min-width: 100px;
min-height: 150px;
}
或以下用于 id 为 sliderID
的单个 gtksliderscale#sliderID slider{
min-width: 100px;
min-height: 150px;
}