当前位置:  技术问答>gtk中如何获取gtk_text_view中的输入内容? iis7站长之家

gtk编程的一些问题

    来源: 互联网  发布时间:2016-04-16

    本文导语:  如何在窗口边框点鼠标右键弹出的动作中加入自己的动作?在窗口边框上点鼠标右键会出现最大化最小化之类的东西,我想加入一个about之类的东西然后弹出一个对话框,不知道怎么实现,各位大大支个招~~~ 还有一个问题,在linux下...


如何在窗口边框点鼠标右键弹出的动作中加入自己的动作?在窗口边框上点鼠标右键会出现最大化最小化之类的东西,我想加入一个about之类的东西然后弹出一个对话框,不知道怎么实现,各位大大支个招~~~

还有一个问题,在linux下如何制作程序的图标?在window下程序可以制作自己的图标,linux如何制作?

|
弹出菜单popup,类似的lz自己改改……

#include 

static gint my_popup_handler(GtkWidget *widget, GdkEvent *event)
{
GtkMenu *menu;
GdkEventButton *event_button;
g_return_val_if_fail (widget != NULL, FALSE);
g_return_val_if_fail (GTK_IS_MENU (widget), FALSE);
g_return_val_if_fail (event != NULL, FALSE);

menu = GTK_MENU (widget);
if(event -> type == GDK_BUTTON_PRESS)
{
event_button = (GdkEventButton *) event;
if(event_button->button == 3)
{
gtk_menu_popup (menu, NULL, NULL, NULL, NULL,
event_button->button, event_button->time);
return TRUE;
}
}
return FALSE;
}

int main(int argc, char* argv[])
{
GtkWidget *window;
GtkWidget *box;
GtkWidget *button;
GtkWidget *menubar;
GtkWidget *menu;
GtkWidget *editmenu;
GtkWidget *helpmenu;
GtkWidget *rootmenu;
GtkWidget *menuitem;
GtkAccelGroup *accel_group;

gtk_init(&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW(window), "弹出式菜单");
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
accel_group = gtk_accel_group_new();
gtk_window_add_accel_group(GTK_WINDOW(window), accel_group);
box = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), box);

menu = gtk_menu_new();
menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_NEW, accel_group);
gtk_menu_shell_append (GTK_MENU_SHELL(menu), menuitem);

menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_OPEN, accel_group);
gtk_menu_shell_append (GTK_MENU_SHELL(menu), menuitem);

menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_SAVE, accel_group);
gtk_menu_shell_append (GTK_MENU_SHELL(menu), menuitem);

menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_SAVE_AS, accel_group);
gtk_menu_shell_append (GTK_MENU_SHELL(menu), menuitem);
gtk_widget_show(menuitem);
menuitem = gtk_separator_menu_item_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);

menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_QUIT, accel_group);
gtk_menu_shell_append (GTK_MENU_SHELL(menu), menuitem);

rootmenu = gtk_menu_item_new_with_label(" 文件 ");
gtk_menu_item_set_submenu (GTK_MENU_ITEM(rootmenu), menu);
menubar = gtk_menu_bar_new();
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), rootmenu);

rootmenu = gtk_menu_item_new_with_label(" 编辑 ");
editmenu = gtk_menu_new();
menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_CUT, accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), menuitem);
menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_COPY, accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), menuitem);
menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_PASTE, accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), menuitem);
menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_FIND, accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), menuitem);
gtk_widget_show(rootmenu);
gtk_menu_item_set_submenu (GTK_MENU_ITEM(menubar), rootmenu);
rootmenu = gtk_menu_item_new_with_label(" 帮助 ");
helpmenu = gtk_menu_new();
menuitem = gtk_image_menu_item_new_from_stock
(GTK_STOCK_HELP, accel_group);
gtk_menu_shell_append(GTK_MENU_SHELL(editmenu), menuitem);
menuitem = gtk_menu_item_new_with_label(" 关于...");
gtk_menu_shell_append(GTK_MENU_SHELL(helpmenu),menuitem);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(rootmenu), helpmenu);
gtk_menu_shell_append(GTK_MENU_SHELL(menubar), rootmenu);
gtk_box_pack_start(GTK_BOX(box), menubar, FALSE, FALSE, 5);
button = gtk_button_new_with_label("单击右键弹出菜单");
g_signal_connect_swapped(GTK_OBJECT(button), 
"button_press_event", 
G_CALLBACK(my_popup_handler), GTK_OBJECT(menu));
gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 5);
gtk_widget_show_all(window);
gtk_main();
return FALSE;

}

|
那个在 GTK+ 2.0编程范例 http://www.china-pub.com/8419
看到过 鼠标右键弹出自定义菜单
不过没实践 ,记不清了

|
接分来也

|
图标是desktop文件。

|
gtk提供about的,你用glade-2 做个demo试试。

|
楼上方法即可。。
其实就是一个popmenu

|
哈哈。。。

    
 
 

您可能感兴趣的文章:

  • 本人刚学gtk编程,留下油箱,欢迎喜欢gtk编程的朋友和我交流啊!!!!
  • Redhat linux9.0 下Gtk+编程的#include <gtk/gtk.h>问题
  • 我想学习GTK+2.0,请问如何准备GTK编程环境???
  • gtk编程问题,如何在一个线程中向gtk控件发送一个expose_event消息
  • gtk编程中关于gtk_widget_show函数的问题
  • 请教linux下的编程的选择:我听说有gtk+gnome的编程,也有kde里的 什么编程,到底应该选择哪个呢?好象一个是技术好一点,一个是市场占有
  • gtk编程的报错了
  • GTK 界面编程有问题,求解
  • GTK编程问题
  • GTK+编程用什么函数实现窗口的最大化最小化控制?
  • 请推荐一本GTK+编程书籍
  • 一个关于gtk编程问题?
  • gtk编程问题2?
  • gtk编程如何改变创建窗口的大小?
  • 请问各位大虾,用gtk编程如何让图片缩放,旋转?
  • X Window编程Qt,GTK哪个比较好
  • linux下的gtk编程
  • 请问GTK下编程,如何将一个图片设计成一个按钮?谢谢!
  • gtk编程求助:程序里打开了一个子窗口,如何等子窗口关闭后再继续往下执行?
  • 在windows下用Gtk编程,如何配置
  • 【重要】gtk+ 编译gtk+的问题,不同于一般gtk的搭建--1000分,问题解决了,开号给分,决不食言!大家都来看看
  • 关于gtk的目录问题,我的目录是 gtk-2.0/gtk/gtk.h ??
  • [GTK] gtk最小化问题与恢复问题
  • gtk for win 和 gtk for linux 下的程序问题?
  • GTK+ gtk_tree问题
  • 【gtk+】初学gtk+,请教一个问题
  • 【gtk】关于gtk布局问题
  • 关于GTK中gtk_widget_hide()的问题
  • 新手问题:gtk+-2.0.0.tar.gz和gtk+-2.0.0.tar.bz2这两个文件是什么关系啊?
  • gtk+编译没有问题,运行的时候出问题,就是这句gtk_widget_show_all(window);请各位帮忙解答,谢谢
  • gtk的问题.
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • gtk 和 gtk+ 有什么区别?
  • centos5.4中安装gtk时,yum库最新版是gtk2.10,如何更新yum库安装gtk2.12
  • 我使用GTK+2.0写界面程序时,怎么找不到gtk.h文件?
  • GTK窗口前端显示及GTK窗口闪烁
  • 用GTK开发的程序如何在没有GTK动态连接库的Linux里运行?
  • 【GTK】GTK中有没有这个widget?
  • 大家好,想知道gtk与gtk+有什么区别?
  • gtk中如何获取gtk_text_view中的输入内容?
  • GTK+中类似gtk_hbox_new这样的给构件分配内存的函数 为什么不用手动释放?
  • 请问:gtk有哪些信息啊,delete_event是不是个信息啊,哪有gtk信息的资料啊,帮助上有吗?
  • 高分请教,如何能够使GTK能够在gtk生成的窗口里面放一个其它程序的窗口?
  • 为什么,我的/usr/include/下没有,没gtk和gdk目录?
  • 哪位大虾懂linux gtk+
  • gtk_image_new的使用
  • 怎样正确设置GTK+的环境变量?
  • GTK+的C++接口 GTKmm
  • PHP-GTK
  • 请问gdk和gtk的函数库是怎么按装的?
  • about gtk programming????
  • gtk 全屏的疑问。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3