1 Star 0 Fork 0

天上的八哥/getting-started-gtk-rs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
LGPL-3.0

简介

这个是GTK4.0教程的Rust实现。

为了重复利用/target文件夹(单次编译一般在1个G左右),请跳到对应的提交查看。

由于最后部分将会用到教程中的代码,因此许可证必须与教程代码一致,即LGPL 2.0及之后版本。

勘误

依赖文件(Config.toml)中的sledchrono被错误添加。它们与这个项目无关,可以删除。

Basics 基础

51fb97ad

对应教程Basics部分

建立了一个200*200的空窗体。

Hello, World 你好,世界

8efeca27

对应教程Hello, World部分

建立一个写着"Hello, World"的按钮,按下后会打印出"Hello World"并关闭窗体。

Packing 布局

581707d6

对应教程Packing部分

建立一个包含三个按钮的窗体并布局。

Custom Drawing 绘画

95cfd0d5

对应教程Custom Drawing部分

建立一个带绘画区域的窗体。按住左键绘制,按右键或改变窗体大小消除图案。

根据gtk-rs官方教程,静态指针改为Rc<RefCell<T>>

Building user interfaces 创建交互界面

f255231

对应教程Building user interfaces部分

通过导入XML定义的界面文件来生成窗体。

由于cargo不具备类似maven或gradle的资源文件管理功能,我将XML文件直接当作字符串放入程序中。

Building application 创建应用

对应教程Building application部分

创建一个应用。

鉴于不想折腾桌面文件、图标、GSettings设置、资源文件等,内容将会有较大程度的精简。想要了解如何使用Meson打包系统,建议参考官方模板

A trivial application 一个简单的应用

e0a6d74

对应教程A trivial application部分

创建一个只有窗体的简单的应用。

省略了桌面文件及图标。

Populating the window 填充窗体

c0f9978

对应教程Populating the window部分

通过ui文件定义窗体的大小、标题、布局。

如上所述,ui文件直接作为字符串放入代码避免打包问题。

Opening files 打开文件

dc67f3d

对应教程Opening files部分

添加查看文件功能,可打开多个文件。参数在启动时传递。

例:cargo run -- README.md LICENSE .gitignore

A menu 菜单

5b66db6

对应教程A Menu部分

添加一个包含退出菜单项的菜单,及退出快捷键组合。

A preference dialog 偏好设置

7fd5e85

对应教程A preference dialog部分

添加一个可设置字体的对话框。

设置GSettings文件

运行时需安装org.gtk.exampleapp.gschema.xml

标准设置

$ sudo install -D org.gtk.example.gschema.xml /usr/share/glib-2.0/schemas/
$ sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

这个命令将会把org.gtk.example.gschema.xml文件复制到惯例目录中并编译,之后只需正常使用cargo run即可运行。

非标准安装

$ glib-compile-schemas .
$ GSETTINGS_SCHEMA_DIR=. cargo run --README.md

以上是不移动org.gtk.example.gschema.xml的例子,直接在当前文件中编译,无需root权限,但是运行时需指定放置GSettings Schema的文件夹。

Adding a search bar 添加搜索栏

f98f046

对应教程Adding a search bar部分

添加一个搜索栏。

我没有在gtk-rs中找到对应template_bind_callback的方法,因此没有采用这种方式,而是手动添加信号。

Adding a side bar 添加侧边栏

2206285

对应教程Adding a side bar部分

添加一个侧边栏。统计所有单词后生成每个单词对应的按钮,用于跳转到该位置。

鉴于Rust有自己的集合,我没有采用GTK的集合。

Properties 属性

2045e10

对应教程Properties部分

利用属性控制行数的显示与否。

总结

教程到这里就结束了。希望这个仓库对你有帮助。

空文件

简介

用rust实现Getting start with gtk中的例子 展开 收起
README
LGPL-3.0
取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/peter-jerry-ye/getting-started-gtk-rs.git
git@gitee.com:peter-jerry-ye/getting-started-gtk-rs.git
peter-jerry-ye
getting-started-gtk-rs
getting-started-gtk-rs
master

搜索帮助