文档章节

PythonQt在Mac OS X - Yosemite成功编译运行

openthings
 openthings
发布于 2015/01/25 21:22
字数 680
阅读 1358
收藏 8

        PythonQt实现了C++对象和Python脚本的双向调用,是实现Qt与Python互操作和嵌入式脚本的重要方式。

        PythonQt的原始工程在:http://pythonqt.sourceforge.net/。这个项目来自于Mevis,一个功能强大的医疗图像处理软件。可能是考虑到产品级软件的稳定性,里面用的是Qt4.6.2,python用的2.6。而现在最新的Qt主流版本是5.4,Python已经是3.4.2了。下面我们将在最新的Mac OS上进行这些最新版本的编译,请扶好坐稳!!!

        Yosemite没有Python3的缺省安装,直接到www.python.org去下最新的版本,安装完毕。

        然后到http://www.qt-project.org下载Qt5.4的对应版本,安装完毕。

        现在,打开Qt Creator,载入PythonQt.pro项目,进行配置,选择Desktop XXX Clang_64,等待...

        结果等来了的是一大堆警告和几个莫名其妙的错误,反正就是不成功...

        开始折腾,卸载...安装...设置参数...环境变量...没有任何效果。        

        仔细分析了一下错误信息,发现里面都是报的“protected...”信息。然后,找到原始的Qt文件,把这些成员变量(函数)的前面都加上public:,再次编译,通过。

        如下所示:

//Add "public" by openthings. This got error by PythonQt,change to public member.
public:
    enum Extension {
        UserExtension = 0x80000000
    };

        但是又出现新的类似错误,如法炮制。全部修改完后,再编译,通过,运行,通过,喔耶!!!

        因为之前同样的代码在Linux没有任何问题,基本搞清楚问题的原因所在:在gcc上没有检查对于protected的enum变量没有限制外部成员访问,而clang进行了严格的限制,导致编译不通过。

        现在,把Qt的代码的enum的成员需要外部访问的改为public修饰符,就全部OK了。但是因为改的是Qt的代码,需要备份起来,要不以后一更新,又会出问题了。

        对clang编译器(这个做正确了但是闯了祸的家伙!)进一步感兴趣的可以参考这里:http://www.tuicool.com/articles/u6jMb2N


© 著作权归作者所有

openthings
粉丝 320
博文 1129
码字总数 675031
作品 1
东城
架构师
私信 提问
加载中

评论(4)

openthings
openthings 博主
用途不一样,pyqt是在python环境下运行。在Python下做界面,可以用pyqt。PythonQt是在C++下的,对于C++的工程要添加脚本支持,就要用PythonQt了。
yoory29
yoory29
不是有PyQt吗?
openthings
openthings 博主
是有点大,但是功能还是强大的,静态编译应该就好了。
冰山0011
冰山0011
QT开发的软体太臃肿 类似YY 不好用
一起来测试吧!OS X Yosemite 公测版正式发布

与昨天的消息相同,苹果开始向参加 OS X Yosemite 公开测试的用户发出邮件。只有100万注册测试计划的的用户可以参与测试,参与测试的用户可以收购兑换码,并在 Mac App Store 中下载和安装。...

oschina
2014/07/25
2.2K
13
OS X Yosemite DP6 发布,第六个开发者预览版

苹果今天向开发者发布了新版 OS X Yosemite 测试版,距离第五个开发者预览版发布相隔两周。OS X Yosemite DP 6的编译号为 14A3429f,已经是 Yosemite 系统的用户可以通过 Mac App Store 安装...

oschina
2014/08/19
1K
7
OS X Yosemite DP7 发布,第七个开发者预览版

苹果今天向开发者发布了最新 OS X Yosemite 测试版,也就是 Yosemite DP7,第七个开发者预览版。OS X Yosemite DP7 距离第六个开发者预览版相隔两周。苹果在今年6月举行的 WWDC 发布会上正式...

oschina
2014/09/03
1K
4
苹果向开发者发布第一个 OS X Yosemite GM

苹果今天向开发者发布了 OS X Yosemite GM 版,距离第八个开发者预览版和第三个公测版相隔两周时间。用户可以通过 Mac App Store 升级,或者在 Mac 开发者中心下载 OS X Yosemite GM。GM 是指...

oschina
2014/10/01
1K
5
OS X Yosemite 10.10.1 发布:提高 WiFi 可靠性

苹果今天发布了 OS X Yosemite 10.10.1,这也是 OS X Yosemite 正式版今年10月发布后,第一款升级补丁。OS X 10.10.1 的测试在11月3日开始,苹果已经向开发者发布了2个测试版。OS X Yosemite...

oschina
2014/11/18
2.5K
18

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部