Qt4程序移植到Qt5有问题

时间:2023-02-01 14:25:58
 Linux下Qt,原来用Qt4编译运行OK的程序,现在移植到Qt5库的板子,出现以下几个问题:
       1、 拖放效果,在拖的时候,拖动的PNG图片的透明效果消失变成黑色背景
       2、 paintEvent中的字体,没有用我选用的字体或与其相近的字体,而是用了别的字体(Qt默认字体?)。
       3、 paintEvent中设置窗体透明度毫无效果,仍是完全不透明的,代码: 
                         QPainter p( this );               
                         p.fillRect( QRect( 0, 0, 800, 480 ), QColor( 0, 0, 0, 40 ) );

        刚开始搞Qt5,对其与Qt4差别、Linux下特有的东西基本不懂,烦请各位大侠多多指教,谢谢!

15 个解决方案

#1


引用 楼主 lanlan1284 的回复:
 Linux下Qt,原来用Qt4编译运行OK的程序,现在移植到Qt5库的板子,出现以下几个问题:
       1、 拖放效果,在拖的时候,拖动的PNG图片的透明效果消失变成黑色背景
       2、 paintEvent中的字体,没有用我选用的字体或与其相近的字体,而是用了别的字体(Qt默认字体?)。
       3、 paintEvent中设置窗体透明度毫无效果,仍是完全不透明的,代码: 
                         QPainter p( this );               
                         p.fillRect( QRect( 0, 0, 800, 480 ), QColor( 0, 0, 0, 40 ) );

        刚开始搞Qt5,对其与Qt4差别、Linux下特有的东西基本不懂,烦请各位大侠多多指教,谢谢!

     没人理呢…… Qt4程序移植到Qt5有问题

#2


自己顶一下……

#3


顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

#4


引用 3 楼 dell_tx 的回复:
顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我这个是在windows下都是OK的,放在开发板上就不行了 Qt4程序移植到Qt5有问题完全不知道怎么回事啊 Qt4程序移植到Qt5有问题

#5


这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

#6


引用 5 楼 lifan120 的回复:
这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题

#7


引用 6 楼 lanlan1284 的回复:
Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

#8


引用 7 楼 lifan120 的回复:
Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

#9


引用 8 楼 lanlan1284 的回复:
Quote: 引用 7 楼 lifan120 的回复:

Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

不过windows是Qt5.3.1,Linux是Qt5.2.1

#10


引用 9 楼 lanlan1284 的回复:
Quote: 引用 8 楼 lanlan1284 的回复:

Quote: 引用 7 楼 lifan120 的回复:

Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

不过windows是Qt5.3.1,Linux是Qt5.2.1

linux下的开发我也没有用过,亲。你是做嵌入式的吗?

#11


引用 10 楼 lifan120 的回复:
Quote: 引用 9 楼 lanlan1284 的回复:

Quote: 引用 8 楼 lanlan1284 的回复:

Quote: 引用 7 楼 lifan120 的回复:

Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

不过windows是Qt5.3.1,Linux是Qt5.2.1

linux下的开发我也没有用过,亲。你是做嵌入式的吗?

恩,原来搞windows来着,现在搞嵌入式了。嵌入式的事情比windows要多啊 Qt4程序移植到Qt5有问题不知道是不是涉及到底层?搞不懂啊很多时候

#12


引用 3 楼 dell_tx 的回复:
顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我的是windows下编译运行都OK啊,Linux下编译放到开发板运行就出现这些问题了 Qt4程序移植到Qt5有问题

#13


引用 12 楼 lanlan1284 的回复:
Quote: 引用 3 楼 dell_tx 的回复:

顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我的是windows下编译运行都OK啊,Linux下编译放到开发板运行就出现这些问题了 Qt4程序移植到Qt5有问题



是不是你开发板上的库不全啊,底层平台的支持有关吧,有错误提示信息吗

#14


引用 13 楼 dell_tx 的回复:
Quote: 引用 12 楼 lanlan1284 的回复:

Quote: 引用 3 楼 dell_tx 的回复:

顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我的是windows下编译运行都OK啊,Linux下编译放到开发板运行就出现这些问题了 Qt4程序移植到Qt5有问题



是不是你开发板上的库不全啊,底层平台的支持有关吧,有错误提示信息吗

应该不是吧,没有错误提示啊 Qt4程序移植到Qt5有问题

#15


感觉Qt不能向下兼容很麻烦,改动太大了,对使用者来说很不方便,增加了太多麻烦; Qt4程序移植到Qt5有问题对初学者来说也是个问题,到底是该学习Qt4呢还是该学习Qt5?

#1


引用 楼主 lanlan1284 的回复:
 Linux下Qt,原来用Qt4编译运行OK的程序,现在移植到Qt5库的板子,出现以下几个问题:
       1、 拖放效果,在拖的时候,拖动的PNG图片的透明效果消失变成黑色背景
       2、 paintEvent中的字体,没有用我选用的字体或与其相近的字体,而是用了别的字体(Qt默认字体?)。
       3、 paintEvent中设置窗体透明度毫无效果,仍是完全不透明的,代码: 
                         QPainter p( this );               
                         p.fillRect( QRect( 0, 0, 800, 480 ), QColor( 0, 0, 0, 40 ) );

        刚开始搞Qt5,对其与Qt4差别、Linux下特有的东西基本不懂,烦请各位大侠多多指教,谢谢!

     没人理呢…… Qt4程序移植到Qt5有问题

#2


自己顶一下……

#3


顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

#4


引用 3 楼 dell_tx 的回复:
顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我这个是在windows下都是OK的,放在开发板上就不行了 Qt4程序移植到Qt5有问题完全不知道怎么回事啊 Qt4程序移植到Qt5有问题

#5


这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

#6


引用 5 楼 lifan120 的回复:
这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题

#7


引用 6 楼 lanlan1284 的回复:
Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

#8


引用 7 楼 lifan120 的回复:
Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

#9


引用 8 楼 lanlan1284 的回复:
Quote: 引用 7 楼 lifan120 的回复:

Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

不过windows是Qt5.3.1,Linux是Qt5.2.1

#10


引用 9 楼 lanlan1284 的回复:
Quote: 引用 8 楼 lanlan1284 的回复:

Quote: 引用 7 楼 lifan120 的回复:

Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

不过windows是Qt5.3.1,Linux是Qt5.2.1

linux下的开发我也没有用过,亲。你是做嵌入式的吗?

#11


引用 10 楼 lifan120 的回复:
Quote: 引用 9 楼 lanlan1284 的回复:

Quote: 引用 8 楼 lanlan1284 的回复:

Quote: 引用 7 楼 lifan120 的回复:

Quote: 引用 6 楼 lanlan1284 的回复:

Quote: 引用 5 楼 lifan120 的回复:

这种现象的发生是正常的,举个例子就跟车一样,陈旧的发动机放在新车上,肯定会降低别的部件的性能呀。
首先Qt5在API对Qt4进行了增强,而且你说的这些都是项目升级过程中需要手动调节的一部分。耐心加载吧,估计不难。

关键是毫无头绪啊,对应的API 在Qt5也都有啊,不知道从哪入手呀 Qt4程序移植到Qt5有问题


没事的,你可以再新建一个项目文件,对之前的进行重新编译,改动不会很大的。

我是重新建了个项目,然后把那些.c和.h文件拷过来重新编译的啊,windows编译运行都是OK的(也是Qt5),Linux编译也通过了,就是放到板子上运行的时候出现这个问题。还是说我没有弄明白你的意思?

不过windows是Qt5.3.1,Linux是Qt5.2.1

linux下的开发我也没有用过,亲。你是做嵌入式的吗?

恩,原来搞windows来着,现在搞嵌入式了。嵌入式的事情比windows要多啊 Qt4程序移植到Qt5有问题不知道是不是涉及到底层?搞不懂啊很多时候

#12


引用 3 楼 dell_tx 的回复:
顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我的是windows下编译运行都OK啊,Linux下编译放到开发板运行就出现这些问题了 Qt4程序移植到Qt5有问题

#13


引用 12 楼 lanlan1284 的回复:
Quote: 引用 3 楼 dell_tx 的回复:

顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我的是windows下编译运行都OK啊,Linux下编译放到开发板运行就出现这些问题了 Qt4程序移植到Qt5有问题



是不是你开发板上的库不全啊,底层平台的支持有关吧,有错误提示信息吗

#14


引用 13 楼 dell_tx 的回复:
Quote: 引用 12 楼 lanlan1284 的回复:

Quote: 引用 3 楼 dell_tx 的回复:

顶楼主一下,感同身受,我是windows下Qt4的程序在Qt5中完全不能运行,后来发现是Qt5中对库文件进行了改动,在Qt4中存在的库文件在Qt5中要么不存在,要么是改名字加内容了,最后和谐掉那一部分,结果界面是可以显示了,却是显示的一塌糊涂,哎,还是自己重新编写一遍吧,Qt5改动之后向前是不兼容的

我的是windows下编译运行都OK啊,Linux下编译放到开发板运行就出现这些问题了 Qt4程序移植到Qt5有问题



是不是你开发板上的库不全啊,底层平台的支持有关吧,有错误提示信息吗

应该不是吧,没有错误提示啊 Qt4程序移植到Qt5有问题

#15


感觉Qt不能向下兼容很麻烦,改动太大了,对使用者来说很不方便,增加了太多麻烦; Qt4程序移植到Qt5有问题对初学者来说也是个问题,到底是该学习Qt4呢还是该学习Qt5?