关于将qt作为max插件ui库所遇到的困难

这个东西从昨天下午开始搞,也基本上成功将qt整合进来了,使用qt solutions的Qt/MFC Migration Framework ,但是遇到一个很棘手的消息分派的问题。

在max的插件中使用qt的输入控件时,比如QTextEditor,不能正确输入,只要输入的字符中含有max的快捷键,就不会被作为char输入。跟入到qt,发现qWidget在接受到key事件前,先接到了WM_KILLFOCUS消息,导致qt无法对比如textEditor控件操作了。

总的来说,应该是max不管三七二十一的接管了key事件。

尝试使用钩子截获max的键盘和getMessage消息,截获是截获了,但是没有找到方法将其导入qt。

关键在于是给max这种第三方软件制作插件,而不是我们自己的应用程序,所以很多要素不可控,当然,我自己对windows的消息以及qt的消息分派也没能非常深入!尽管尝试了多种方式,未果!

有点负气的,决定使用纯win32api来开发max插件了。其实这样也好,省去各种UI的深入学习成本,虽然我在UI上花的功夫,已经是专业级。

posted on 2011-08-17 15:23 yacper 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/yacper/archive/2011/08/17/2143178.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,要将一个库生成为DLL(动态链接)作为插件,可以按照以下步骤进行操作: 1. 创建一个Qt项目,并将其类型设置为库(lib)项目。 2. 在项目文件(.pro文件)中添加以下内容: ``` TEMPLATE = lib CONFIG += plugin ``` 这样做可以确保项目被编译为插件库。 3. 在项目中实现插件的功能,包括类、函数等。 4. 在插件类的头文件中使用`Q_INTERFACES`宏来声明该类实现了哪些Qt接口。例如: ```cpp class MyPlugin : public QObject, public MyInterface { Q_OBJECT Q_INTERFACES(MyInterface) // ... }; ``` 这样做可以告诉Qt框架该类实现了指定的接口。 5. 在插件类的实现文件中使用`Q_PLUGIN_METADATA`宏来定义插件的元数据。例如: ```cpp Q_PLUGIN_METADATA(IID "com.example.MyInterface") ``` 这里的`"com.example.MyInterface"`是一个唯一的标识符,用于识别插件所实现的接口。 6. 构建项目,生成DLL文件。在构建过程中,Qt会自动处理插件相关的细节,生成可用于加载的DLL文件。 7. 将生成的DLL文件放置在主应用程序可以访问到的位置。加载插件时,主应用程序可以使用Qt提供的插件机制来加载并使用该DLL。 需要注意的是,Qt框架提供了一些用于创建插件的基类和宏,如`QObject`、`Q_INTERFACES`、`Q_PLUGIN_METADATA`等。通过使用这些功能,Qt可以提供插件的自动发现、加载和使用机制,使插件开发更加方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值