首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在GTK for C中将光标更改为手表?

首先,我们需要明确GTK和C语言的基本概念。GTK是一个图形工具包,用于创建跨平台应用程序,而C语言是一种通用编程语言。接下来,我们将讨论如何将光标更改为手表。

  1. 首先,我们需要导入必要的头文件。
代码语言:c
复制
#include <gtk/gtk.h>
  1. 然后,我们需要创建一个GTK应用程序。
代码语言:c
复制
int main(int argc, char *argv[]) {
  GtkWidget *window;
  GtkWidget *view;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(window, "GTK+ View");
  gtk_window_set_default_size(window, 400, 300);

  view = gtk_drawing_area_new();
  gtk_drawing_area_set_size(view, 400, 300);

  gtk_container_add(GTK_CONTAINER(window), view);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}
  1. 接下来,我们需要编写代码来将光标更改为手表。
代码语言:c
复制

#include <gdk/gdk.h>

#include <gtk/gtk.h>

static void draw_watch(GtkWidget widget, GdkRectangle rect,

代码语言:txt
复制
                    gboolean draw_text) {

const gchar *text;

gint hour, minute;

gdk_draw_rectangle(widget->window, widget->style->fg_color, rect,

代码语言:txt
复制
                  FALSE, 0, 0, widget->allocation.width,
代码语言:txt
复制
                  widget->allocation.height);

if (draw_text) {

代码语言:txt
复制
text = g_strdup_printf("%02d:%02d", hour, minute);
代码语言:txt
复制
gdk_draw_text(widget->window, widget->style->font, rect, text,
代码语言:txt
复制
               strlen(text));
代码语言:txt
复制
g_free(text);

}

}

static gboolean update_time_callback(gpointer data) {

GtkLabel *label = GTK_LABEL(data);

gchar *text;

gint hour, minute;

g_get_current_time(&hour, &minute);

text = g_strdup_printf("%02d:%02d", hour, minute);

gtk_label_set_text(label, text);

g_free(text);

return TRUE;

}

static void create_watch_button(GtkWidget window, GtkWidget box,

代码语言:txt
复制
                             gint hour, gint minute) {

GtkWidget *button;

GdkRectangle rect;

gint x, y;

gint width, height;

gchar *text;

button = gtk_button_new_with_label("Watch");

gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);

gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE);

x = (box->allocation.width - button->allocation.width) / 2;

y = (box->allocation.height - button->allocation.height) / 2;

rect.x = x;

rect.y = y;

rect.width = button->allocation.width;

rect.height = button->allocation.height;

gtk_container_add(GTK_CONTAINER(button), &rect);

gtk_widget_show(button);

text = g_strdup_printf("%02d:%02d", hour, minute);

gtk_button_set_label(button, text);

g_free(text);

g_signal_connect(button, "clicked",

代码语言:txt
复制
               G_CALLBACK(update_time_callback), label);

}

int main(int argc, char *argv[]) {

GtkWidget *window;

GtkWidget *box;

GtkWidget *view;

GtkLabel *label;

gint hour, minute;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_title(window, "Time");

gtk_window_set_default_size(window, 400, 300);

gtk_window_set_position(window, GTK_WIN_POS_CENTER);

box = gtk_

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux 命令(240)—— tput 命令

tput 命令通过 terminfo 数据库可以对终端会话进行初始化或更改终端功能,移动或更改光标、更改文本属性,以及清除终端屏幕的特定区域。 2.什么是 terminfo 数据库?...有些情况下,您可能需要输入敏感信息(密码),或在屏幕上两个不同的区域输入信息。在此类情况下,使用 tput 可能会对您有所帮助。...使用 tput 可以方便地实现在各设备上移动光标的位置。通过在 tput 中使用 cup 选项,或光标位置,您可以在设备的各行和各列中将光标移动到任意 X 或 Y 坐标。...tput rc将光标返回到使用tput sc保存的原始位置。 (4)更改光标属性。 在向某一设备显示数据时,很多时候您并不希望看到光标。将光标转换为不可见可以使数据滚动时的屏幕看起来整洁。...,将前景颜色更改为红色: tput setb 6 tput setf 4 要反显当前的颜色方案,只需执行 tput rev。

1.4K20

dotnet 在 UOS 国产系统上使用 Xamarin Forms 创建 xaml 界面的 GTK 应用

本文告诉大家如何在 UOS 国产系统上,通过 Xamarin.Forms 使用 XAML 写界面逻辑,构建出 GTK 应用 本文将使用特别底层的方法告诉大家如何一步步创建,而不是告诉大家如何在 IDE...全平台带界面应用 dotnet 在 UOS 国产系统上使用 MonoDevelop 进行拖控件开发 GTK 应用 dotnet 在 UOS 国产系统上使用 MonoDevelop 创建 GTK 全平台带界面应用...Xamarin.Forms 项目之后,再拷贝到 UOS 上,也是可以的,但是有一点需要注意的是不能拷贝 bin 和 obj 文件夹过去,原因是在 obj 文件夹存放了很多依赖本机电脑的文件夹绝对路径的文件,...NuGet.Packaging.Core.PackagingException: Unable to find fallback package folder 'C:\ProgramData\Xamarin...NuGet.Packaging.Core.PackagingException: Unable to find fallback package folder 'C:\Program Files (x86

2.6K10

SceneKit 场景编辑器-为您的AR体验构建3D舞台

蓝色是相机,还有其他物体,物理和动画。 Apple Watch Pink 外壳 我们将从手表外壳开始。 盒子几何 将Box拖放到场景中。要调整节点的视图,诀窍是双击节点名称框旁边的节点图标。...让我们添加一些灯让它看起来逼真。在此之前,让我们将视图更改为Front并倾斜大小写以从大约45度角的轮廓中查看它。现在,转到对象库并添加全向灯,它将从该光源的每个方向照亮场景。...我们不是试图在这里复制完美的手表,而只是学习如何使用基本形状组装物体。 平面颜色 让屏幕变黑,就像手表处于非活动状态一样。...管子旋转 应用与表冠相同的构思,我们将在节点检查器中将其在z轴上旋转90度。 管子位置 有时,重置位置以查看放置方式是很好的。然后,你可以从那里移动它。因此,对于x,y和z,将其初始化为0。...预览观看场景 我们如何才能真实地看到手表在应用中的外观?运行应用程序,您可以按cmd+ R了。 结论 现在,我们只使用基本几何图形制作了一个简单的3D对象,并应用材质使其看起来真实。

5.5K20

WebKit三件套(3):WebKit之Port篇

初步分析已有WebKit Port移植实现与WebCore交互接口的实现在WebKit源代码目录结构中WebKit目录下分别包含gtk、mac、qt、win、wx目录,其分别对应不同的Port移植方式。...+动态或静态库的方式供C/C++外部程序调用),这样WebKit内部与外部即JavaVM的交互(如上面提到的ChromeClient、 FrameLoaderClient接口实现)需要一个Bridge类来协调处理...,如何在提供的显示场所显示Web内容则往往由WebCore中的layout部分来实现,其中充分利用了Css定义来布局显示该显示的内容;一旦涉及控制或动态处理往往由Port部分发起而由Javascript...从另外一个角度来看一个页面一般说来(除非遇到iframe或插件需要另外提供一块子画布)相当于一块画布,浏览器引擎能在其精确的位置绘制不同颜色的文字、图片、图标等,同时根据当前的鼠标及一个模拟的输入提示光标位置...了解WebKit Port部分,对我们如何利用WebKit有非常现实的意义,目前已经将WebKit移植到多种平台windows、qt、gtk、mac、wx、java、framebuffer等,甚至移植到

2K10

编译原理基础

许多操作系统,包括许多类Unix系统,Linux及BSD家族都采用GCC作为标准编译器。 GCC原本用C开发,后来因为LLVM、Clang的崛起,它更快地将开发语言转换为C++。...许多C的爱好者在对C++一知半解的情况下主观认定C++的性能一定会输给C,但是Ian Lance Taylor给出了不同的意见,并表明C++不但性能不输给C,而且能设计出更好,容易维护的程序。...,也不是编译器的集合,它们只是一种驱动器,根据参数中的文件类型,调用对应的 GNU 编译器,所以准确的说法是:gcc 调用了 C compiler, g++ 调用了C++ compiler。...对于 C 语言之外的语言,MinGW 使用标准的 GNU 运行库, C++ 使用 GNU libstdc++。但是 MinGW 使用 Windows 中的C运行库。...GTK 是自由软件,并且是 GNU 计划的一部分。自2019年2月6日起,GTK+ 改名为 GTKGTK 使用 C 语言开发,但是其设计者使用面向对象技术。

86010

Vim复制粘贴_vim复制粘贴命令

556C21919D77FB59!...、gedit)中,同理,要把在其他地方用Ctrl+C或右键复制的内容复制到vim中,需要在正常模式下按”+p; 要将vim某个粘贴板里的内容粘贴进来,需要退出编辑模式,在正常模式按”Np,其中N为粘贴板号...注意:在我这里,只有vim.gtk或vim.gnome才能使用系统全局粘贴板,默认的vim.basic看不到+号寄存器。...个字符,可以按 4yl (复制光标后的)(”14yl)(“110yl 后面10个字符),4yh(复制光标前的) ,就复制了4个字符到缓冲区中了, 按下来就可以用 p (指定粘贴板为”1v 引号不能少...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

3K50

Visual Studio 调试系列2 基本调试方法

在托管代码中将看到一个对话框,询问你是否希望在自动跳过属性和运算符时收到通知(默认行为)。 若稍后想更改设置,请在“调试”下的“工具”>“选项”菜单中禁用“单步跳过属性和运算符”设置。...07 运行到光标处(Ctrl + F10) 右键单击应用中的代码行,然后选择“运行到光标处”。 此命令将启动调试并在当前代码行上设置临时断点。 ?...你还可以执行其他操作,查看错误详细信息及从异常帮助程序添加监视。 或者,如有需要可更改引发特定异常的条件。 有关如何在代码中处理异常的详细信息,请参阅调试技术和工具。 查看详细信息 ?...单击 c2.First.Value 的第二个实例且将 c2.First.Value 更改为 c2.Last.Value。...移动指针可用于跳过包含已知的 bug 的代码部分的情况。 ? 若要更改要执行的下一个语句,调试器必须处于中断模式。

4.4K10

IntelliJ IDEA使用技巧

CTRL+F 在当前窗口查找文本 CTRL+SHIFT+F 在指定窗口查找文本 CTRL+R 在 当前窗口替换文本 CTRL+SHIFT+R 在指定窗口替换文本 ALT+SHIFT+C...自动代码 ALT+回车 导入包,自动修正 CTRL+ALT+L 格式化代码 CTRL+ALT+I 自动缩进 CTRL+ALT+O 优化导入的类和包 ALT+INSERT 生成代码(GET...CTRL+UP/DOWN 光标跳转到第一行或最后一行下 ESC 光标返回编辑框 SHIFT+ESC 光标返回编辑框,关闭无用的窗口 IDEA最棒的是能将快捷键修改为自己熟悉的IDE风格!!!...能修改为Eclipse和Visual Studio,很棒! 修改方式:File-->Settings-->Keymap ?...那么如何在IDEA中安装genymotion插件呢? File-->Settings-->Plugins-->Browse repositories-->搜索genymotion,安装即可 ? ?

1.1K40

vim实用笔记

进入插入-普通模式 不离开插入模式,粘贴寄存器中的文本 Practical Vim, by Drew Neil Read Drew Neil's 修改为: Practical Vim... 在插入模式 用{register}可以方便地粘贴文本 gv 重复上一次选区 将标签内容改为大写 one two...var foo = 1; var bar = 'a'; var foobar = foo + bar; 光标在第一行的末尾 jj$ A; I 光标移至行首并进入插入模式...}; 当与d{motion}或c{motion}一起使用时,倾向于使用t{char}及T{char} 查找命令可以与动作命令结合 This phrase gets to the point....i) i" it 另一类是操作文本块,单词,句子和段落 iw aw 当前单词 iW aW 当前字串 is as 当前句子 ip ap 当前段落 设置位置标记 m{a-zA-Z}会用选定的字母标记当前光标所在位置

1.1K20

使用 Linux 自动化工具提高生产率

AutoKey 有两个变体:为像 GNOME 等基于 GTK 环境而设计的 autokey-gtk 和基于 QT 的 autokey-qt。...你可以从命令行安装任一变体: sudo dnf install autokey-gtk 安装完成后,使用 autokey-gtk(或 autokey-qt)运行它。...调出用户界面(UI)配置: autokey-gtk -c AutoKey 提供了一些预设配置的示例。你可能希望在熟悉 UI 时将他们留作备用,但是可以根据需要删除它们。...创建一个新的子文件夹,可以在其中将所有“打字排版错误校正”配置分组。...这是我设置的一个小脚本,该脚本进入 Tmux 的复制模式,以将前一行中的第一个单词复制到粘贴缓冲区中: from time import sleep # 发送 Tmux 命令前缀(b 更改为 s) keyboard.send_keys

2.1K30

数据分析篇 | 如何配置数据分析利器Jupyter Notebook?

何在启动时指定目录? 如何安装扩展插件? 如何修改颜色主题? 如何让一个单元格显示多个输出? 如何不使用科学计数法显示数字? 如何添加与删除虚拟环境?...如何在启动时指定目录? 指定启动目录可以减少很多切换目录的麻烦操作,呆鸟以前写过一篇《1 分钟修改 Jupyter 启动文件夹》,已经介绍过,不在此赘述了。...代码里的 virtualenv-name 要改为实际的虚拟环境名称,比如呆鸟用的虚拟环境就叫 Python3,见下图。...移动到上一个单元格:↑ 移动到下一个单元格:↓ 复制光标所在整行:Ctrl + C,注:不要选择任何内容 剪切光标所在整行:Ctrl + X,注:不要选择任何内容 其它复制、剪切、黏贴、重做、取消等快捷键与...命令模式快捷键: 切换为编辑模式:Enter 选中单元格改为代码格式:Y 选中单元格改为 Markdown 格式:M 选中单元格改为原生格式:R 当前单元格上方插入单元格:A 当前单元格下方插入单元格:

2.3K30

【完整版】让你提升命令行效率的 Bash 快捷键

Ctrl + u :从光标处删除至命令行首 Ctrl + k :从光标处删除至命令行尾 Ctrl + w :从光标处删除至字首 Alt + d :从光标处删除至字尾 Ctrl + d :删除光标处的字符...Ctrl + h :删除光标前的字符 Ctrl + y :粘贴至光标后 Alt + c :从光标处更改为首字母大写的单词 Alt + u :从光标处更改为全部大写的单词 Alt + l :从光标处更改为全部小写的单词...:使用上一条命令的最后一个参数 控制命令 Ctrl + l:清屏 Ctrl + o:执行当前命令,并选择上一条命令 Ctrl + s:阻止屏幕输出 Ctrl + q:允许屏幕输出 Ctrl + c:终止命令...blah:执行最近的以 blah 开头的命令, !ls !blah:p:仅打印输出,而不执行 s!$s:上一条命令的最后一个参数,与 Alt + . 相同 ! :p:打印输出 ! 的内容 !...^S、^Q、^C、^Z 是由终端设备处理的,可用 stty 命令设置。

1K10

【Rust日报】2020-05-18 Castor, WASM, Rust嵌套循环

Browser for the small internet (Gemini, Gopher, Finger) https://sr.ht/~julienxx/Castor/ Caster 这是一个用Rust调用GTK...依赖库: openssl gtk+3 gdk-pixbuf pango atk cairo 编译和安装: 运行make就可以编译Castor 安装:sudo make install 运行Castorr...gemini://gemini.circumlunar.space/capcom" [colors] h1 = "red" h2 = "#FF6347" h3 = "green" list = "#C71585...通用的语法: for var in iterator { // do stuff } 我个人认为,所有的编程语言都应该采用iterators单一语法来实现循环。...("{}", x); } 打印结果: 0 1 2 3 4 5 嵌套循环: 在很多编程语言,嵌套循环都非常诡异,比如,我们如何在一个嵌套循环中让外循环继续的条件建立在内循环里呢?

81920

Arch Linux的正确使用方法

video-ati 输入法(Fcitx) 相关Wiki:Wiki:https://wiki.archlinux.org/index.php/Fcitx_(简体中文) pacman -S fcitx 为了在 gtk...与 qt 程序中获得良好的输入体验(例如光标跟随与显示预编辑字符串)并避免一些 xim 无法解决的 bug, 请根据需要安装对应的输入法模块: fcitx-gtk2, fcitx-gtk3, fcitx-qt4...export XMODIFIERS="@im=fcitx" 另外Fcitx 提供了图形界面的配置程序,你可以安装他们:kcm-fcitx(基于KDE 的 kcm), fcitx-configtool(基于 gtk3...fcitx-table-extra(其中包括仓颉等输入法) 办公软件(WPS) 由于WPS只发布了32位的版本,因此如果ArchLinux是64位的系统需要添加multilib仓库,在/etc/pacman.conf文件中将下面两行内容解开注释即可...星际译王3.0版增加了全文翻译,网络词典等新功能。

5.6K70

基于linux的嵌入IPv4协议栈的内容过滤防火墙系统(3)-内容过滤防火墙系统简介

(整个系统应该称为GNU/Linux,其原因在本章的后续内容中将会给以介绍。)...1 GTK+ GTK+是一个成熟,高效的构件集合.它在保持了扩展性和效率的前提下提供了现代的视觉和感觉效果.GTK+为应用程序开发者提供了一个强大的系统对象,它具有动态查询的能力,还可以在运行时修改对象和构件...3 语言捆绑 因为GTK+开发的开放性,许多人发布了捆绑GTK+的语言.除了C还有许多语言可以用来创建GTK+应用程序:C++,Perl,Python,Pascal,Objective C,Guile...5 拖放 GTK+拖放功能支持Xdnd和Motif拖放协议,它们允许其它支持这两个协议的其它构件使用拖放功能.使用其它支持拖放协议的构件(例如Motif, Qt)写的程序可以和GTK+应用程序共享拖放功能...C语言适用范围大 C 语言还有一个突出的优点就是适合于多种操作系统, DOS、UNIX,也适用于多种机型。

1K10

掌握这些提升命令行效率的快捷键后,让你的 SHELL 快得飞起来 ( 强烈建议收藏!)

Ctrl + u :从光标处删除至命令行首 Ctrl + k :从光标处删除至命令行尾 Ctrl + w :从光标处删除至字首 Alt + d :从光标处删除至字尾 Ctrl + d :删除光标处的字符...Ctrl + h :删除光标前的字符 Ctrl + y :粘贴至光标后 Alt + c :从光标处更改为首字母大写的单词 Alt + u :从光标处更改为全部大写的单词 Alt + l :从光标处更改为全部小写的单词...:使用上一条命令的最后一个参数 控制命令 Ctrl + l:清屏 Ctrl + o:执行当前命令,并选择上一条命令 Ctrl + s:阻止屏幕输出 Ctrl + q:允许屏幕输出 Ctrl + c:终止命令...blah:执行最近的以 blah 开头的命令, !ls !blah:p:仅打印输出,而不执行 !$:上一条命令的最后一个参数,与 Alt + . 相同 !$:p:打印输出 !$ 的内容 !...^S、^Q、^C、^Z 是由终端设备处理的,可用 stty 命令设置。

99920
领券