如何在 GTK Vala 中实现 CSS 样式?
How to Implement CSS Styling in GTK Vala?
我正在尝试在 GTK 中为我的标签添加 CSS 样式,但我不知道如何设置文件。我目前在开头添加了一个包含,但出现此错误:
我也不知道我是否正确地实现了这个,对 GTK 编程来说非常新。有人可以帮助我正确设置它以实现 CSS 实施吗?
#include<gtk/gtk.h>
public class MyApp : Gtk.Application {
public MyApp() {
Object (
application_id: "com.github.omerntosi.gtkHangman",
flags: ApplicationFlags.FLAGS_NONE
);
}
protected override void activate() {
var main_window = new Gtk.ApplicationWindow(this);
main_window.set_default_size(1000,800);
main_window.title = "GTK Hangman";
var grid = new Gtk.Grid();
grid.orientation = Gtk.Orientation.VERTICAL;
grid.row_spacing = 6;
var topHalf = new Gtk.Grid();
topHalf.orientation = Gtk.Orientation.HORIZONTAL;
grid.row_spacing = 6;
var man = new Gtk.Image();
man.set_from_file("../src/img/placeholder-500x350.png");
topHalf.add(man);
GtkCssProvider cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "style.css", NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_USER);
var sol = new Gtk.Label("____ ______");
sol.set_use_markup(true);
topHalf.add(sol);
grid.add(topHalf);
main_window.add(grid);
main_window.show_all();
}
public static int main(string[] args) {
var app = new MyApp();
return app.run(args);
}
}
您在同一个文件中混合了 Vala 和 C,我已将 C 部分翻译成 Vala:
- 删除了
#include
指令。
- 将带有 Gtk.CssProvider 的 C 代码从 C 移植到 Vala
结果如下:
public class MyApp : Gtk.Application {
public MyApp() {
Object (
application_id: "com.github.omerntosi.gtkHangman",
flags: ApplicationFlags.FLAGS_NONE
);
}
protected override void activate() {
var main_window = new Gtk.ApplicationWindow(this);
main_window.set_default_size(1000,800);
main_window.title = "GTK Hangman";
var grid = new Gtk.Grid();
grid.orientation = Gtk.Orientation.VERTICAL;
grid.row_spacing = 6;
var topHalf = new Gtk.Grid();
topHalf.orientation = Gtk.Orientation.HORIZONTAL;
grid.row_spacing = 6;
var man = new Gtk.Image();
man.set_from_file("../src/img/placeholder-500x350.png");
topHalf.add(man);
Gtk.CssProvider css_provider = new Gtk.CssProvider ();
css_provider.load_from_path ("style.css");
Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER);
var sol = new Gtk.Label("____ ______");
sol.set_use_markup(true);
topHalf.add(sol);
grid.add(topHalf);
main_window.add(grid);
main_window.show_all();
}
public static int main(string[] args) {
var app = new MyApp();
return app.run(args);
}
}
用 --pkg gtk+-3.0
编译。这将修复有关缺少 gtk.h 等的编译器消息。如果没有,则您没有正确安装 GTK+ 3.0 headers(apt-get install libgtk-3-dev
包)。
Vala 正在后台使用 pkg-config
工具将 CFLAGS 和 LDFLAGS 添加到将 Vala 源文件编译为二进制文件的 C 编译步骤中。
生成的 C 文件将自动具有 #include <gtk/gtk.h>
,因为它在 gtk+-3.0.vapi 文件中指定,随 vala 编译器一起提供。
没有资源文件我无法测试它,但经过这些更改后它在这里编译得很好。
还有一个警告,因为代码没有在某处捕获 GLib.Error
,但您应该可以自己修复它。
这里还有另一个关于如何在 Vala 中使用 CSS 的代码示例:
嗨,如果您想设置一个组件的样式,我找到了答案
1) 只需删除此:
GtkCssProvider cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "style.css", NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_USER);
并写:
var cssProvider = new Gtk.CssProvider ();
cssProvider.load_from_path ("yourcss.css");
sol.get_style_context ().add_provider (cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER);
然后编译
我正在尝试在 GTK 中为我的标签添加 CSS 样式,但我不知道如何设置文件。我目前在开头添加了一个包含,但出现此错误:
我也不知道我是否正确地实现了这个,对 GTK 编程来说非常新。有人可以帮助我正确设置它以实现 CSS 实施吗?
#include<gtk/gtk.h>
public class MyApp : Gtk.Application {
public MyApp() {
Object (
application_id: "com.github.omerntosi.gtkHangman",
flags: ApplicationFlags.FLAGS_NONE
);
}
protected override void activate() {
var main_window = new Gtk.ApplicationWindow(this);
main_window.set_default_size(1000,800);
main_window.title = "GTK Hangman";
var grid = new Gtk.Grid();
grid.orientation = Gtk.Orientation.VERTICAL;
grid.row_spacing = 6;
var topHalf = new Gtk.Grid();
topHalf.orientation = Gtk.Orientation.HORIZONTAL;
grid.row_spacing = 6;
var man = new Gtk.Image();
man.set_from_file("../src/img/placeholder-500x350.png");
topHalf.add(man);
GtkCssProvider cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "style.css", NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_USER);
var sol = new Gtk.Label("____ ______");
sol.set_use_markup(true);
topHalf.add(sol);
grid.add(topHalf);
main_window.add(grid);
main_window.show_all();
}
public static int main(string[] args) {
var app = new MyApp();
return app.run(args);
}
}
您在同一个文件中混合了 Vala 和 C,我已将 C 部分翻译成 Vala:
- 删除了
#include
指令。 - 将带有 Gtk.CssProvider 的 C 代码从 C 移植到 Vala
结果如下:
public class MyApp : Gtk.Application {
public MyApp() {
Object (
application_id: "com.github.omerntosi.gtkHangman",
flags: ApplicationFlags.FLAGS_NONE
);
}
protected override void activate() {
var main_window = new Gtk.ApplicationWindow(this);
main_window.set_default_size(1000,800);
main_window.title = "GTK Hangman";
var grid = new Gtk.Grid();
grid.orientation = Gtk.Orientation.VERTICAL;
grid.row_spacing = 6;
var topHalf = new Gtk.Grid();
topHalf.orientation = Gtk.Orientation.HORIZONTAL;
grid.row_spacing = 6;
var man = new Gtk.Image();
man.set_from_file("../src/img/placeholder-500x350.png");
topHalf.add(man);
Gtk.CssProvider css_provider = new Gtk.CssProvider ();
css_provider.load_from_path ("style.css");
Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER);
var sol = new Gtk.Label("____ ______");
sol.set_use_markup(true);
topHalf.add(sol);
grid.add(topHalf);
main_window.add(grid);
main_window.show_all();
}
public static int main(string[] args) {
var app = new MyApp();
return app.run(args);
}
}
用 --pkg gtk+-3.0
编译。这将修复有关缺少 gtk.h 等的编译器消息。如果没有,则您没有正确安装 GTK+ 3.0 headers(apt-get install libgtk-3-dev
包)。
Vala 正在后台使用 pkg-config
工具将 CFLAGS 和 LDFLAGS 添加到将 Vala 源文件编译为二进制文件的 C 编译步骤中。
生成的 C 文件将自动具有 #include <gtk/gtk.h>
,因为它在 gtk+-3.0.vapi 文件中指定,随 vala 编译器一起提供。
没有资源文件我无法测试它,但经过这些更改后它在这里编译得很好。
还有一个警告,因为代码没有在某处捕获 GLib.Error
,但您应该可以自己修复它。
这里还有另一个关于如何在 Vala 中使用 CSS 的代码示例:
嗨,如果您想设置一个组件的样式,我找到了答案 1) 只需删除此:
GtkCssProvider cssProvider = gtk_css_provider_new();
gtk_css_provider_load_from_path(cssProvider, "style.css", NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_USER);
并写:
var cssProvider = new Gtk.CssProvider ();
cssProvider.load_from_path ("yourcss.css");
sol.get_style_context ().add_provider (cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER);
然后编译