Qt.Visual.Studio.Integration 是一套很棒的的VS插件工具,个人感觉比QT的 qt-vs-addin-1.x.x 好用。
尤其是与QT 4.5.x Commercial for VS2008配合的时候,可以直接在Visual Studio 2008里就直接创建QT工程,直接使用内嵌的QT设计器,直接使用Visual Studio进行项目的编译和调试,完全的与Visual Studio无缝集成。
问题的最初发生是因为又一次偶然的使用QT 4.5.0 的desinger 打开了项目里的ui文件,并且做了编辑和保存。然后回到Visual Studio里再试图打开内嵌的设计器进行编辑时,遇到了打开失败的错误:“The file ******* cannot be opened with the Qt 4 form editor.Try converting the file using uic.ex ”。
难道是自己的什么操作破坏了ui文件了?带着这样的疑问,用文本编辑器打开ui文件,可以看到依然是一个合法的XML内容的ui文件,并未发现什么异常的不合法的内容。用QT 4.5.0的designer打开ui文件,的确可以正常打开ui文件进行编辑。这也证明了ui文件并未被破坏。
会不会是偶然情况呢?为了验证这种情况,重新在visual studio里创建一个ui文件,并且打开编辑,一切正常。然后再次用QT 4.5.0的desinger对其进行编辑保存。回到visual studio里,再打开这个ui文件,同样的错误窗口再次弹出。。。。
到底问题出在哪里呢?重新用Visual Studio创建一个ui文件。然后使用文本编辑器打开后,与Visual Studio不能打开的ui文件进行比较,发现了一个最大的不同,在不能打开的ui文件头部,多了这么一行:
<?xml version="1.0" encoding="UTF-8"?>
将这行删除后,再尝试使用Visual Studio打开,果然,这次终于可以在Visual Studio里正常打开ui文件了。
自此之后,我就记住了,如果想在Visual Studio直接打开ui文件却遇到同样问题的时候,就直接删除ui的文件头即可!
但是,问题并没有就此结束。
很快,随着编码的持续进行,需要对项目添加翻译文件,以实现应用程序的国际化切换界面语言的需求。
当试图在Visual Studio里的QT插件菜单里选择Create New Translation File… 时,意外再次发生了。弹出的错误窗口如下:
郁闷,打开命令提示符窗口,使用lupdate来手动生成ts文件,发现了这样一个错误:
Unknown feature http://qtsoftware.com/xml/features/report-whitespace-only-CharData
打开浏览器,访问提示的页面,无效链接~~~~,无语。
看URL,又提到了xml,于是想到了是不是还是ui的问题,使用lupdate单独对ui文件进行处理: lupdate ***.ui –ts test.ts
果然,问题再现了(但是ts文件成功产生)。。。。回想到之前的问题。。。于是尝试把去除掉的UI文件头重新添加回去。。。居然又可以从VisualStudio生成了。。。
其实我本该就此定论,已经得出解决方案了。。。。可是,可是。再一次在另外一个测试工程里验证此过程的时候,经过上面的步骤后,依然不能从Visual Studio创建翻译文件了。。。。。哎,哪位高手给解释解释,这到底是咋回事嗫?从QT的文档里看,之前发现的report-whitespace-only-CharData似乎是跟遇到的问题没有关系。。。。
不过幸好这个问题其实已经不是什么大问题了,因为在上面的验证过程中,可以注意到从命令提示符使用 lupdate 时可以产生出ts文件。这个ts文件是可以再Visual Studio里使用linguist编辑,也可以使用右键菜单里的命令进行更新和发布生成qm文件了的。(注,如果使用lupdate命令之前已经存在ts文件,并且是0字节,会报错“ Parse error at D:/***/***/testts_zh.ts:1:0: Premature end of document ”的,此时只要删除原来的ts文件即可)
恩,that's all。。。。。
希望可以给遇到同样问题的童鞋一点点帮助。:)