linux 国产化 gtk图形界面开发 go和c++环境搭建

一.c++环境搭建

1.解决系统自带gcc无法编译gtk的问题

sudo apt-get install build-essential

2.安装gtk和GOHOME环境

sudo apt-get install gnome-devel gnome-devel-docs

3.安装 pkg-config 工具,用于编译gtk的

 sudo apt-get install  pkg-config

4.安装gtk的gnome窗口的c/c++语言图形库

sudo apt-get install glade libglade2-dev(实际有效) 或者
sudo apt-get install glade-gnome glade-common glade-doc
  1. 编写好gtk文件,用下列命令进行编译
sudo gcc main.cpp -o main `pkg-config --cflags --libs gtk+-2.0`

6.可能依赖裤

sudo apt-get install libgtk-3-dev libappindicator3-dev -y

7.测试,可拖动的无标题窗口

#include <gtk/gtk.h>gboolean on_button_press(GtkWidget* widget,GdkEventButton * event, GdkWindowEdge edge)
{if (event->type == GDK_BUTTON_PRESS){if (event->button == 1) {gtk_window_begin_move_drag(GTK_WINDOW(gtk_widget_get_toplevel(widget)),event->button,event->x_root,event->y_root,event->time);}}return FALSE;
}int main( int argc, char *argv[])
{GtkWidget *window;gtk_init(&argc, &argv);window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);gtk_window_set_title(GTK_WINDOW(window), "Drag & drop");gtk_window_set_decorated(GTK_WINDOW (window), FALSE);gtk_widget_add_events(window, GDK_BUTTON_PRESS_MASK);g_signal_connect(G_OBJECT(window), "button-press-event",G_CALLBACK(on_button_press), NULL);g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), G_OBJECT(window));gtk_widget_show(window);gtk_main();return 0;
}

二.gtk(go)环境搭建(vscode编译器)

1.go环境搭建(略过)

2.create new main.go
3.go mod init yourproject

package mainimport ("fmt""os""github.com/mattn/go-gtk/glib""github.com/mattn/go-gtk/gtk"
)func main() {gtk.Init(&os.Args)window := gtk.NewWindow(gtk.WINDOW_POPUP)window.SetPosition(gtk.WIN_POS_CENTER)window.SetTitle("GTK Go!")window.SetIconName("gtk-dialog-info")window.Connect("destroy", func(ctx *glib.CallbackContext) {fmt.Println("got destroy!", ctx.Data().(string))gtk.MainQuit()}, "foo")//--------------------------------------------------------// GtkVBoxvbox := gtk.NewVBox(false, 2)//--------------------------------------------------------// button// button := gtk.NewButtonWithLabel("Button with label")// button.Clicked(func() {//     fmt.Println("button clicked:", button.GetLabel())// })// vbox.Add(button)//--------------------------------------------------------window.Add(vbox)window.SetSizeRequest(242, 140)window.ShowAll()gtk.Main()
}

4.go mod tidy(下载安转依赖库,太慢则切换go镜像 阿里云镜像)

linux 国产化 gtk图形界面开发 go和c++环境搭建相关推荐

  1. linux下GTK图形界面取消关闭按钮和最大化按钮代码

    linux下GTK图形界面取消关闭按钮和最大化按钮代码 由于项目需要,需要将GTK图形界面的关闭按钮和最大化按钮去掉,查阅很多资料终于解决.先分享出来,方便大家学习. 首先创建一个GTK小窗口(代码不 ...

  2. AliOS Things图形界面开发指南

    简介   物联网设备开发过程中,嵌入式GUI(用户图形界面)的开发是一个重要的组成部分.许多智能设备如智能家电.智能手表.智能仪表上都会涉及到GUI开发.AliOS Things集成开源图形库litt ...

  3. alios things开发板_AliOS Things图形界面开发指南

    摘要: 简介   物联网设备开发过程中,嵌入式GUI(用户图形界面)的开发是一个重要的组成部分.许多智能设备如智能家电.智能手表.智能仪表上都会涉及到GUI开发.AliOS Things集成开源图形库 ...

  4. 怎么开发Linux图形界面程序,Linux下的图形界面编程

    Linux下的图形界面编程 一.Qt和GTK+ 虽然Linux下的大多数开发是基于字符界面的,但在Linux环境下也可以开发出美观大方的图形界面.经过多年的发展,目前已经存在多种用于在Linux下开发 ...

  5. linux下的图形界面扫雷游戏(Gtk+2.0)

    linux下的图形界面扫雷游戏(Gtk+2.0) 空间 转载请注明出处.http://www.cnblogs.com/dave_cn/ 之前做了一个字符界面下的扫雷(http://www.cnblog ...

  6. python界面开发工具-python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy(推荐学习:Python视频教 ...

  7. python界面开发工具哪个好_python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy Kivy是一个开源工具包能够 ...

  8. python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy Kivy是一个开源工具包能够 ...

  9. 不是python中用于开发用户界面的第三方库-python界面 | Tkinter图形界面开发库

    0 写在前面 未经允许,不得转载,谢谢~~ 毕设要在现有的基础上做一个可视化的界面,所以趁机也学习一波如何用python实现图形界面的开发. 本文主要学习并整理了: 简要介绍用于python图形界面开 ...

最新文章

  1. ZeroMq实现跨线程通信
  2. Javascript正则匹配不含某子串
  3. PHP RSA签名
  4. oracle 10g视频教程
  5. 南邮CTF密码学write up
  6. 汇编语言LAHF和SAHF指令
  7. java 文件删除异常 ut_【JAVA-UT】12、抛出了指定的异常吗?
  8. 解决 IntelliJ IDEA 安装后界面消失,再次打开后界面不动
  9. jsp里照片放在哪里_杭州这所新学校今天办了场热闹的“电影节”,校园里处处高科技,黑板一秒变电脑屏幕...
  10. python 类可以调用实例变量_python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法...
  11. mysql 释放行锁_《深入精通Mysql(三)》深入底层Mysql各种锁机制(面试必问)...
  12. Mysql 查看连接数,状态,最大并发数
  13. r矢量球坐标系旋度_三个常用坐标系的认识及矢量旋度表达式的证明
  14. Google I/O 2019 行纪 —— Google 要让 AI 消除偏见
  15. host=‘api.github.com‘, port=443): Max retries exceeded with url
  16. 程序员的数学【概率论】
  17. 我是明晃晃的开端(2017/4/17)
  18. linux系统有gotoxy函数,gotoxy() implementation for Linux using printf
  19. jeecg boot微服务架构图
  20. Spring 框架学习—控制反转(IOC)

热门文章

  1. 自定义 Typora 皮肤主题
  2. 2020第二届华为云人工智能大赛 · 无人车挑战杯
  3. AUTOCAD学习笔记8:单相桥式整流滤波稳压电路的绘制
  4. 接下来告诉大家怎么让音乐淡入淡出
  5. linux r语言 指定编码,R语言-进行数据的重新编码(recode)操作
  6. 年末阿里百度等大厂技术面试题汇总,灵魂拷问
  7. 【第05题】给定两个点的坐标 (x1, y1) 和 (x2, y2),求两点间的距离 | 浮点数精度问题
  8. 升级鸿蒙系统第一批平板名单,华为鸿蒙首批升级机型名单曝光:双系列手机、折叠屏和平板电脑-芯查查...
  9. MYSQL数据库简介和常用的基本SQL语句
  10. windows2003系统修复