gtk+ 解决如何c 实现透明窗口口

先锋游戏知道信息频道欢迎您
编程:GTK 怎么给控件添加背景 或 设置控件透明
[欢乐猪] [ 12:55:22] (<span id="tgd) (<span id="tfd) &&
问题详情gtk
写出来的界面怎么给控件添加背景图片gtk_button_new();
创建一个按钮
怎样设置背景图片 求解答 最佳答案按钮里面给他放一个 label 查看更多答案&&
昵称: 验证码:
评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述
编程相关知识
编程其他问题gtk 中控件可以设置透明吗?_百度知道
gtk 中控件可以设置透明吗?
我有更好的答案
你好哦楼主~很高兴看到你的问题。但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。对于你的问题我爱莫能助!可能是你问的问题有些专业了,或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也会比较热心,能快点帮你解决问题。快过年了,最后祝您全家幸福健康快乐每一天!
可以用Frame + fixed 组合成透明窗体
为您推荐:
其他类似问题
gtk的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Help, 如何做一个透明窗口?
[问题点数:0分]
本版专家分:68
CSDN今日推荐
本版专家分:68
本版专家分:1532
本版专家分:15319
本版专家分:1532
本版专家分:1532
本版专家分:1293
2003年1月 VB大版内专家分月排行榜第一
2002年12月 VB大版内专家分月排行榜第二2002年11月 VB大版内专家分月排行榜第二
2003年2月 VB大版内专家分月排行榜第三
本版专家分:1621
本版专家分:237
本版专家分:68
本版专家分:5
本版专家分:51700
2005年7月 VC/MFC大版内专家分月排行榜第二
2005年6月 VC/MFC大版内专家分月排行榜第三
匿名用户不能发表回复!|
CSDN今日推荐在GTK+中实现嵌入式窗口
<a data-traceid="question_detail_above_text_l&&
Windows下的托盘(tray)是不是很酷呢?利用这种机制,你可以方便的把自己的应用程序嵌入到任务栏里。大多数时候,应用程序在后台工作,不会干扰用户,当用户想查看某些信息时,只点一下这个小图标就行了。应用程序在响应点击事件时,可以把应用程序提到前台来,可以弹出一个对话框,可以显示一个菜单,或者做其它任何事情,这完全是应用程序自己的事,与任务栏一点关系都没有。
在Linux下的桌面环境里,不但有这个功能,而且功能更加强大。Linux下的桌面环境有好几种,在PC上最为流行的当然是KDE和GNOME。它们往往都有一套自己的机制,搞得不同桌面环境下开发的应用程序之间的兼容性很差。为了让这些应用程序之间能够互相嵌入,当然得有一个标准才行。为此,freedesktop.org组织制定了一个XEBEDDED协议()。
只要遵守XEBEDDED协议,用Qt写的应用程序可以嵌入到GNOME的任务栏里,用GTK+写的应用程序可以嵌入到KDE的任务栏里。不但如此,在需要的情况下,两个应用程序之间也可以任意嵌入,而不必关心它们是用哪个库实现的。
虽然说这个协议很简单,自己要从头实现一个,未免太麻烦了。为了简化应用程序开发,GTK+已经封装一套函数。本文用一个简单的实例,介绍如何开发这类应用。在此之前,我们先熟悉几个概念:
插座(socket):这里指宿主窗口,它可以让其它应用程序,把窗口嵌入到它里面。如,任务栏就是一个插座(socket)。
插头(plug): 顾名思义,它就是被嵌入的窗口,可以插入到插座(socket)上。相对任务栏而言,应用程序的窗口就是插头(plug)。
插头(plug)/插座(socket)两者可以在同一个应用中,也可以在不同的应用程序中。在同一个应用程序里,这种做法意义不大,而且可以说是自找麻烦。大多数情况下,它们分别位于不同的进程之中,一个插座(socket)窗口可以容纳多个插头(plug)窗口中,而一个插头(plug)窗口只能处于一个插座(socket)窗口之中。
1.&&插座(socket)端应用程序实现:
#include &stdlib.h&
#include &gtk/gtk.h&
int main( int
argc, char *argv[] )
GtkWidget *
GtkWidget *
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request(window, 80, 40);
socket = gtk_socket_new();
gtk_widget_show (socket);
gtk_container_add (GTK_CONTAINER (window), socket);
gtk_widget_show (window);
g_message(&socket_id=%d/n&, gtk_socket_get_id(socket));
gtk_main ();
2.&&插头(plug)端应用程序实现:
#include &stdlib.h&
#include &gtk/gtk.h&
int main( int
char *argv[] )
gint socket_id = 0;
GtkWidget *
GtkWidget *
gtk_init (&argc, &argv);
if(argc != 2)
g_message(&usage: %s [socket]/n&, argv[0]);
return -1;
socket_id = atoi(argv[1]);
window = gtk_plug_new(socket_id);
button = gtk_button_new ();
gtk_widget_show (button);
gtk_container_add (GTK_CONTAINER (window), button);
gtk_widget_show (window);
gtk_main ();
3.&&Makefile
CFLAGS = -Wall -Wunused
-DG_DISABLE_DEPRECATED
-DGDK_DISABLE_DEPRECATED
-DGDK_PIXBUF_DISABLE_DEPRECATED /
-DGTK_DISABLE_DEPRECATED
all: plug socket
plug: plug.c
$(CC) plug.c -o plug.exe $(CFLAGS) `pkg-config gtk+-2.0 --cflags --libs`
socket: socket.c
$(CC) socket.c -o socket.exe $(CFLAGS) `pkg-config gtk+-2.0 --cflags --libs`
rm -f *.o *.exe
当然,这里为了便于理解,程序写得很简单,实际的应用程序要比这复杂一些,它们的原理都是一样的,大家可参考GTK+的API手册。
文章出处:http://blog.csdn.net/absurd/article/details/600637GTK透明设置
设置整个gtk窗体的透明度(含边框),窗体各处透明度相同
使用函数gtk_window_set_opacity设置整个窗体的透明度
gtk_window_set_opacity函数只能在gtk-2.12以上版本中使用
此功能的实现需要将窗口管理器设成支持透明.
例如在ubuntu 8.04中默认使用metacity窗口管理器,就使用gconf-editor工具,设置apps-&metacity-&general-&compositing_manager为选中状态
l 源码 #include &gtk/gtk.h&
int main(int argc, char *argv[])
GtkWidget *window = NULL;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_opacity(GTK_WINDOW(window), 0.7);
// 设置透明度函数
gtk_widget_show_all(window);
gtk_main();
return TRUE;
l编译 gcc main.c -o main `pkg-config gtk+-2.0 --libs --cflags`
l执行结果 显示一个透明度为70%的窗口
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.042 (s). 13 q(s)

我要回帖

更多关于 gtk窗口主题 的文章

 

随机推荐