这个是GTK4.0教程的Rust实现。
为了重复利用/target
文件夹(单次编译一般在1个G左右),请跳到对应的提交查看。
由于最后部分将会用到教程中的代码,因此许可证必须与教程代码一致,即LGPL 2.0及之后版本。
依赖文件(Config.toml
)中的sled
和chrono
被错误添加。它们与这个项目无关,可以删除。
对应教程Basics部分。
建立了一个200*200的空窗体。
建立一个写着"Hello, World"的按钮,按下后会打印出"Hello World"并关闭窗体。
对应教程Packing部分。
建立一个包含三个按钮的窗体并布局。
建立一个带绘画区域的窗体。按住左键绘制,按右键或改变窗体大小消除图案。
根据gtk-rs官方教程,静态指针改为Rc<RefCell<T>>
。
对应教程Building user interfaces部分。
通过导入XML定义的界面文件来生成窗体。
由于cargo不具备类似maven或gradle的资源文件管理功能,我将XML文件直接当作字符串放入程序中。
创建一个应用。
鉴于不想折腾桌面文件、图标、GSettings设置、资源文件等,内容将会有较大程度的精简。想要了解如何使用Meson打包系统,建议参考官方模板。
创建一个只有窗体的简单的应用。
省略了桌面文件及图标。
通过ui文件定义窗体的大小、标题、布局。
如上所述,ui文件直接作为字符串放入代码避免打包问题。
添加查看文件功能,可打开多个文件。参数在启动时传递。
例:cargo run -- README.md LICENSE .gitignore
。
对应教程A Menu部分。
添加一个包含退出菜单项的菜单,及退出快捷键组合。
添加一个可设置字体的对话框。
运行时需安装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的文件夹。
添加一个搜索栏。
我没有在gtk-rs中找到对应template_bind_callback
的方法,因此没有采用这种方式,而是手动添加信号。
添加一个侧边栏。统计所有单词后生成每个单词对应的按钮,用于跳转到该位置。
鉴于Rust有自己的集合,我没有采用GTK的集合。
利用属性控制行数的显示与否。
教程到这里就结束了。希望这个仓库对你有帮助。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。