百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

使用 VSCode 在 Rust 中使用 libadwaita 对 GTK4 应用程序进行初始设置

bigegpt 2024-08-11 14:29 11 浏览

照片由Mohammad Rahmani在Unsplash上拍摄

当我读到 GTK4 对 Rust 的支持时,我知道我想试试这个设置。为了让这一切变得更好,我想使用 VSCode。VSCode 只是我的一个偏好,如果您使用官方的 Gnome Builder,您可能会更轻松地编写代码,但对于本文,我将坚持使用 VSCode。此外,我们将使用 Fedora 35。我们将使用的应用程序将是一个简单的 RSS 阅读器,因此我们将其称为 GTK RSS Reader。它将使用libadwaitaGnome 开发人员所期望的 UI 框架。

本文的项目在github上,但如果你有一点 Rust 经验,我强烈建议你自己编写它,而不是仅仅克隆它。这将是一个新系列,在我撰写文章时,要点将成为链接:

  1. 初始设置(本文)
  2. 将 UI 移动到模板文件
  3. 将模板与应用程序捆绑在一起
  4. 应用程序 UI 骨架
  5. 重构 UI 模板
  6. 读取 RSS 文件

首先我们需要 VSCode、cargo、rust 和 rustfmt。我们将 VSCode 存储库添加到 dnf:

#sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
 #sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft .com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'

然后我们将它与 Rust 包和 GTK4 开发包一起安装:

#sudo dnf install code 
#sudo dnf install cargo rust-src rustfmt 
#sudo dnf install gtk4-devel libadwaita-devel

接下来我们需要创建一个新的空 Rust 项目:

#mkdir 项目
#cd 项目
#mkdir gtk-rss-reader 
#cd gtk-rss-reader 
#cargo init

现在我们可以在 VSCode 中打开新的 gtk-rss-reader 项目。为了更好的开发体验,我使用了两个 VSCode 扩展:Better TOML 和 Rust Analyzer。您可以从“扩展”窗格安装两者。

Cargo.toml 文件

应用程序的初始 cargo.toml

Cargo.toml 需要知道要使用的应用程序名称、版本、Rust 版本,我们需要指定libadwaita依赖项:

[包]
名称=“gtk-rss-reader”
版本=“0.1.0”
版本=“2021”[依赖项] 
libadwaita = "*"

现在这已经足够了。当我们开始处理 RSS 文件时,我们将在这里填充更多的依赖项。

应用程序窗口

添加代码以创建主应用程序窗口

我们main.rs将开始构建我们的应用程序。对于本文,我只想完成初始设置,因此我将展示如何构建一个空窗口。下一次我们将更多地讨论应用程序 UI。

我们现在有两个函数:应用程序入口点main和build_ui助手。我们来看看main函数:

pub fn main() { 
    let application = Application::new(Some("com.example.gtk-rss-reader"), Default::default());     application.connect_activate(build_ui); 
    应用程序.run(); 
}

我们正在libadwaita使用Application::new. 我们这里使用的字符串com.example.gtk-rss-reader是 Gnome 生态系统中使用的应用程序 ID。每个应用程序都需要有一个 ID,并且格式看起来像一个倒置的 URL。我们还使用Default::default().

接下来我们在创建的应用程序上调用两个函数:connect_activate和run. 该run函数只是启动应用程序,并且该connect_activate函数注册我们的build_ui函数以在应用程序启动时执行。让我们看看build_ui:

fn build_ui(application: &Application) { 
    let window = ApplicationWindow::builder() 
        .application(application) 
        .title("My GTK4 RSS Reader") 
        .default_height(250) 
        .default_width(400) 
        .build();    窗口.show(); 
}

这个函数是我们构建应用程序 UI 的地方。现在我们简单地创建应用程序窗口,为它设置标题、大小并在屏幕上显示它。我们稍后会在这里添加更多内容,但首先,让我们看看到目前为止我们做了什么。我们将在终端中使用 cargo 构建和运行应用程序。我总是使用 VSCode 提供的便捷终端(ctrl+shift+`如果你没有看到的话):

#cargo build 
#cargo 运行

经过一些构建步骤,我们应该会看到全新的 GTK4libadwaita驱动的应用程序窗口:

空的应用程序窗口

有点让人失望?我们的窗口甚至没有标题栏。让我们在build_ui函数中添加它:

fn build_ui(application: &Application) { 
    let content = libadwaita::gtk::Box::new(Orientation::Vertical, 0); 
    content.append(&HeaderBar::builder() 
        .title_widget(&WindowTitle::new("My GTK4 RSS Reader", "")) 
        .build());    let window = ApplicationWindow::builder() 
        .application(application) 
        .title("My GTK4 RSS Reader") 
        .default_height(250) 
        .default_width(400) 
        .content(&content) 
        .build();    窗口.show(); 
}

不要忘记更新use声明:

使用 libadwaita::{ 
    gtk::Orientation, 
    prelude::{ApplicationExt, ApplicationExtManual, BoxExt, WidgetExt}, 
    Application, ApplicationWindow, HeaderBar, WindowTitle, };

现在,如果我们构建并运行应用程序,我们将看到预期的空应用程序窗口:

最后一个带有标题栏的空窗口

最初的工作到此结束,本文也是如此。我们将进一步探索该libadwaita框架,并创建一个简单但可用的 RSS 阅读器应用程序。下次我们会将我们的 UI 代码转移到模板文件中,以提高代码的可读性和复杂性。现在,请随时评论您对本教程的体验,以便我改进它。下一篇文章见!

相关推荐

有些人能留在你的心里,但不能留在你生活里。

有时候,你必须要明白,有些人能留在你的心里,但不能留在你生活里。Sometimes,youhavetorealize,Somepeoplecanstayinyourheart,...

Python学不会来打我(34)python函数爬取百度图片_附源码

随着人工智能和大数据的发展,图像数据的获取变得越来越重要。作为Python初学者,掌握如何从网页中抓取图片并保存到本地是一项非常实用的技能。本文将手把手教你使用Python函数编写一个简单的百度图片...

软网推荐:图像变变变 一“软”见分晓

当我们仅需要改变一些图片的分辨率、裁减尺寸、添加水印、标注文本、更改图片颜色,或将一种图片转换为另一种格式时,总比较讨厌使用一些大型的图像处理软件,尤其是当尚未安装此类软件时,更是如此。实际上,只需一...

首款WP8.1图片搜索应用,搜照片得资料

首款WP8.1图片搜索应用,搜照片得资料出处:IT之家原创(天际)2014-11-1114:32:15评论WP之家报道,《反向图片搜索》(ReverseImageSearch)是Window...

分享一组美图(图片来自头条)(头条美女头像)

...

盗墓笔记电视剧精美海报 盗墓笔记电视剧全集高清种子下载

出身“老九门”世家的吴邪,因身为考古学家的父母在某次保护国家文物行动时被国外盗墓团伙杀害,吴家为保护吴邪安全将他送去德国读书,因而吴邪对“考古”事业有着与生俱来的兴趣。在一次护宝过程中他偶然获得一张...

微软调整Win11 24H2装机策略:6月起36款预装应用改为完整版

IT之家7月16日消息,微软公司今天(7月16日)发布公告,表示自今年6月更新开始,已默认更新Windows1124H2和WindowsServer2025系统中预装...

谷歌手把手教你成为谣言终结者 | 域外

刺猬公社出品,必属原创,严禁转载。合作事宜,请联系微信号:yunlugongby贾宸琰编译、整理11月23日,由谷歌新闻实验室(GoogleNewsLab)联合Bellingcat、DigD...

NAS 部署网盘资源搜索神器:全网资源一键搜,免费看剧听歌超爽!

还在为找不到想看的电影、电视剧、音乐而烦恼?还在各个网盘之间来回切换,浪费大量时间?今天就教你如何在NAS上部署aipan-netdisk-search,一款强大的网盘资源搜索神器,让你全网资源...

使用 Docker Compose 简化 INFINI Console 与 Easysearch 环境搭建

前言回顾在上一篇文章《搭建持久化的INFINIConsole与Easysearch容器环境》中,我们详细介绍了如何使用基础的dockerrun命令,手动启动和配置INFINICon...

为庆祝杜特尔特到访,这个国家宣布全国放假?

(观察者网讯)近日,一篇流传甚广的脸书推文称,为庆祝杜特尔特去年访问印度,印度宣布全国放假,并举办了街头集会以示欢迎。菲媒对此做出澄清,这则消息其实是“假新闻”。据《菲律宾世界日报》2日报道,该贴子...

一课译词:毛骨悚然(毛骨悚然的意思是?)

PhotobyMoosePhotosfromPexels“毛骨悚然”,汉语成语,意思是毛发竖起,脊梁骨发冷;形容恐惧惊骇的样子(withone'shairstandingonend...

Bing Overtakes Google in China's PC Search Market, Fueled by AI and Microsoft Ecosystem

ScreenshotofBingChinahomepageTMTPOST--Inastunningturnintheglobalsearchenginerace,Mic...

找图不求人!6个以图搜图的识图网站推荐

【本文由小黑盒作者@crystalz于03月08日发布,转载请标明出处!】前言以图搜图,专业说法叫“反向图片搜索引擎”,是专门用来搜索相似图片、原始图片或图片来源的方法。常用来寻找现有图片的原始发布出...

浏览器功能和“油管”有什么关联?为什么要下载

现在有没有一款插件可以实现全部的功能,同时占用又小呢,主题主要是网站的一个外观,而且插件则主要是实现wordpress网站的一些功能,它不仅仅可以定制网站的外观,还可以实现很多插件的功能,搭载chro...