扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
GTK,作为与 QT 并存的另外一套图形库,深受C程序员的喜爱。在同一程序中使用 QT 和 GTK,甚至是其它图形库,对于编写嵌入式(Embeded)程序是十分有意义的。这也正式本文章所阐述的主题。
1. 嵌入式程序的概念
嵌入式程序一般没有自己的主循环体,它直接使用窗口的ID来嵌入到其它窗口中。在 Xlib 层次上,使用函数 XReparentWindow 重新设置一个窗口的父窗口:
|
即可以把窗口 w 嵌入到窗口 parent 中。
嵌入式程序一般使用动态库载入的方法,这样使用任何X窗口系统下的图形库,都可以通过输出(Export)其窗口ID的方法和其它程序库协同工作。嵌入程序需要父窗口来管理窗口的一些操作,如窗口的尺寸管理,键盘聚焦等等。一个完整的应用程序也可以嵌入到其它窗口中,一般地,建立主窗口时使窗口不受管理,然后使用XReparentWindow()设置父窗口。
2. 在 QT 中使用 Motif
在 QT 2.x 版本中有一个 QT 的 Xt/Motif 的扩展,它可以使用户编写同时支持 Xt/Motif 和 Qt 的程序。QT 对于Xt/Motif 的扩展是建立了类 QXtWidget 和类 QXtApplication,它主要处理了嵌入窗口的底层事件。
建立一个以 QT 为主的包含Motif组件(Widget)的程序,只要使用QXtApplication 建立主程序,设置一个可以包含QT和Motif窗口的主窗口即可,例如:
|
在 m 中设置两个窗口,一个是QT类建立的,一个是QXtWidget类建立的:
|
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。