没有合适的资源?快使用搜索试试~ 我知道了~
首页KWin编程入门:C++打造自定义窗口管理器装饰
KWin编程入门教程深入介绍了如何在KDE环境下的KWin窗口管理器中进行定制开发。KWin作为默认的窗口管理器,以其高度灵活的主题机制而闻名,所有的装饰都是插件化的,这意味着你可以自由地改变窗口管理器的外观(外观)和行为(交互方式)。这与传统的使用像IceWM这样的Pixmaps引擎创建装饰不同,本教程主要关注的是通过C++代码实现原生的KWin装饰。 该教程旨在帮助初学者了解如何用C++编写KWin装饰程序。它假设读者对C++有一定的掌握,包括继承、Qt信号槽机制以及熟悉常见的Qt类。如果你是Qt新手,强烈建议在开始前花时间学习这个强大的开发工具,因为Qt提供了丰富的文档支持,这对于任何开发者来说都是非常宝贵的资源。 教程中的示例代码可以在example-0.8.tar.gz(约34KB)中找到,尽管文档中展示的代码并未附带详细注释,但源代码本身包含了所有必要的信息。这些代码片段展示了如何设计和实现自定义的窗口装饰功能,例如窗口边框、标题栏等,并可能为开发新的Pixmaps引擎提供有价值的参考。 通过阅读并实践这个教程,学习者将能够增强对KWin窗口管理器的理解,提升C++编程技能,并将其应用到实际的KDE开发项目中。对于想要深入了解KDE框架或寻求个性化窗口管理体验的开发者而言,这是一份不可或缺的指南。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/3892350/bg4.jpg)
config_->setGroup("General");
QRadioButton *button = (QRadioButton*)dialog_->titlealign->selected();
if (button) config_->writeEntry("TitleAlignment", QString(button->name()));
config_->sync();
}
Step Four: The Factory
Each window is known as a "client", and is represented by the ExampleClient class. If you have five
windows up on the screen, you will have five instances of ExampleClient. Initializing and managing the
decoration for multiple clients is the job of the factory. Every decoration will need a factory class, since
this is what KWin uses to create the decoration.
The decoration factory is often used to store global data needed by the clients. We'll use the
ExampleFactory to take care of storing the configuration data. It could also be used to create and store
the pixmaps used by the clients.
ExampleFactory::ExampleFactory()
{
readConfig();
initialized_ = true;
}
KDecoration* ExampleFactory::createDecoration(KDecorationBridge* b)
{
return new ExampleClient(b, this);
}
The factory constructor reads in the configuration and performs any other global initialization for the
decoration. KWin will call the createDecoration() method to create the decoration for each client
window.
bool ExampleFactory::reset(unsigned long changed)
{
initialized_ = false;
bool confchange = readConfig();
initialized_ = true;
if (confchange ||
(changed & (SettingDecoration | SettingButtons | SettingBorder))) {
return true;
} else {
resetDecorations(changed);
return false;
}
}
We need to reset all the clients whenever the configuration or settings have changed. We first read in
our decoration configuration, noting if anything has changed. Then we used the changed parameter to
find out if any KWin settings have changed. changed is a bit field that specifies values for
SettingDecoration, SettingColors, SettingFont, SettingButtons, SettingTooltips, or
SettingBorder.
If the reset() method returns true if all of the decorations need to be remade, or false if only a repaint
HOWTO: KWin Window Manager Decorations http://www.usermode.org/docs/kwintheme...
第4页 共16页 2010年10月31日 14:18
剩余15页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/6cecc42bd1b44eaf884f8e4b1e4ab56a_flowabcd1.jpg!1)
flowabcd1
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)