• 7989阅读
  • 6回复

求助~~~~!!!菜鸟问题 [复制链接]

上一主题 下一主题
离线lnwxlwc
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-21
— 本帖被 XChinux 执行加亮操作(2010-09-21) —
问题1:
         在UI上画了一个 widget , 想让painter 在这个widget上作图, 代码如 QPainter painter(ui->widget); 然后painter.drawRec(……);  结果 ui->widget上并没有出现想要的图形
         别说painter(this), 我要画在ui->widget上;
问题2:
         发布应用程序时  能不能不考 庞大的 库文件QtGui4.dll 等~~~ 发布一个小应用程序 能不能单独 静态编译。  我release后 还是说找不到*.dll文件~~~郁闷
问题3:
         在main函数中加入 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); 然后提示信息可以用中文了。
         结果放到 其他没有QT的机子上 运行 又出现乱码。~~~~用UTF-8 也无效。

 谢谢各位大牛了~~~
        
离线foxyz

只看该作者 1楼 发表于: 2010-09-21
When the paintdevice is a widget, QPainter can only be used inside a paintEvent() function or in a function called by paintEvent(); that is unless the Qt::WA_PaintOutsidePaintEvent widget attribute is set. On Mac OS X and Windows, you can only paint in a paintEvent() function regardless of this attribute's setting.
离线dbzhang800

只看该作者 2楼 发表于: 2010-09-21
引用楼主lnwxlwc于2010-09-21 13:14发表的 求助~~~~!!!菜鸟问题 :
问题1:
         在UI上画了一个 widget , 想让painter 在这个widget上作图, 代码如 QPainter painter(ui->widget); 然后painter.drawRec(……);  结果 ui->widget上并没有出现想要的图形
         别说painter(this), 我要画在ui->widget上;
问题2:
         发布应用程序时  能不能不考 庞大的 库文件QtGui4.dll 等~~~ 发布一个小应用程序 能不能单独 静态编译。  我release后 还是说找不到*.dll文件~~~郁闷
.......

第二个,你可以用静态编译。但体积不会小

第三个,不想多说,
对于 gb2312 看这个 http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html
至于你说的utf8,用对了肯定不会乱码。你可以看 http://hi.baidu.com/cyclone/blog/item/9d7293130e5a498d6538dbf1.html
(尽管是关于setCodecForCStrings的,但二者几乎完全一样)
离线beaujolais
只看该作者 3楼 发表于: 2010-09-21
问题1:要重写paintEvent

问题2:可以,但是要静态编译,把你的应用程序所依赖的库全部编译到exe里去。这样你发布时将只丢一个exe给用户就是了,不过这个exe不会小的。要有心理准备。个人不建议静态编译

       release编译,运行应用程序还是提示少dll,那是肯定的。不过无非就是那么几个人文件libgcc_s_dw2-1.dll、mingwm10.dll、QtGui4.dll、QtCore4.dll、还有你用到的模块的dll文件

       这些文件都在X:\Qt\4.7.0-beta2\bin下。release编译的程序需要的dll文件是很小的基本都是以K计。
问题3:应用程序发布时要考虑兼容性,所以你用了什么插件那么发布应用程序时记得附带上插件支持,
      
       位于X:\Qt\4.7.0-beta2\plugins下,当然只附带release版本的就行了。

       正如你的问题就是忘记附带plugins\codecs  将plugins\codecs\你用的库(*.a/*.dll)复制到应用程序主目录下。目录格式仍保留。。。

       GB2312有些机器没有这个编码会出现乱码也很正常。

      关于汉化建议使用QTransliator   /  Linguist  
离线lnwxlwc

只看该作者 4楼 发表于: 2010-09-23
回 3楼(beaujolais) 的帖子
问题1:要重写paintEvent
我在UI上画的widget 如何重写paintEvent呢??  paintEvent已经在from上应用了。

还有release编译 后 还是提示需要QtGui4.dll 这个文件 都100多M啊~~~

还是有很多不明白  谢谢指教
离线lnwxlwc

只看该作者 5楼 发表于: 2010-09-23
回 1楼(foxyz) 的帖子
谢谢,  大概您还没看明白我的意思, 我再详细说一下。
1,我新建工程 窗体 继承于 QWidget   所以重载paintEvent函数在 class Draw:QWidget ()
   然后 我在UI界面上新添加了一个widget    想让Painter 在 新加的widget上做出曲线图。。。。 谢谢指教~
离线dbzhang800

只看该作者 6楼 发表于: 2010-09-23
Re:回 3楼(beaujolais) 的帖子
引用第4楼lnwxlwc于2010-09-23 13:15发表的 回 3楼(beaujolais) 的帖子 :
问题1:要重写paintEvent
我在UI上画的widget 如何重写paintEvent呢??  paintEvent已经在from上应用了。
还有release编译 后 还是提示需要QtGui4.dll 这个文件 都100多M啊~~~
.......


1. 你需要的:不是ui的widget如何重写paintEvent,而是重写paintEvent的widget如何放到ui中。具体去看designer的manual,无非就是提升法或插件法

2. 100多M的QtGui4.dll?你是在逗大家玩吧?据我所知,这个东西不超过10M。而且用nsis一类工具做成安装包,整个程序也就3、4M的大小。
快速回复
限100 字节
 
上一个 下一个