• 8354阅读
  • 6回复

纵向绘制文本!!(搞定) [复制链接]

上一主题 下一主题
离线rqzrqh
 

只看楼主 倒序阅读 楼主  发表于: 2009-10-04
我想画一个纵向文本,drawText没这个选项。谁能告诉我是哪个函数??

一直有个问题就是想在UI里把一个QLabel对象放在QPushButton上(因为Icon和文本是冲突的,而且需要把文本国际化),但是这样子的话点击label所在范围,QPushButton是不会发送信号的,学了一段时间的事件处理也没把这个问题解决掉。即使是用事件过滤器,但是事件如果未处理,那么会传递到父对象的,QLabel是不可能以QPushButton为父对象的,因此怎么也不可能传递到QPushButton上去(有高手会用事件解决这个问题的麻烦教一下我)。

既然QPainter可以随便自己画文字,那么就自己把文本放上去好了。自己写了一个代码后发现居然没有按钮的样子了,和QWidget一样,平板界面,
查看源代码发现QPushButton自带的paintEvent()应该是绘制了按钮特有的效果部分。于是在自写的paintEvent()代码里最前面加上一句QPushButton::paintEvent(),嘿嘿。终于可以点击文本部分了。唯一的遗憾就是只能设置静态文本,scroll的时候也把按钮的效果给滚动过去了,即使在scroll的后面加QPushButton::paintEvent()没用,应该是请求的画图区域的缘故。

附上纵向绘制的代码
[ 此帖被rqzrqh在2009-10-06 16:35重新编辑 ]
附件: ticker纵向文本绘制.rar (20 K) 下载次数:32
离线318065268
只看该作者 1楼 发表于: 2009-10-04
1、纵向的,但是文字是横着写的。这个就要在paintEvent里面控制drawText的坐标,从上往下一个字一个字的写,有QFontMetrics::height ()函数可以获取字体的高度;
2、纵向的,但是文字也是纵向放置的。这个就是在你写字前rotate一下你的painter了。如果想不影响其它的绘制,可以先save,再restore你的painter。
Email  rsail@126.com(私人邮箱)
QQ:   318065268
离线rqzrqh

只看该作者 2楼 发表于: 2009-10-06
谢谢LS
离线hiti_tony
只看该作者 3楼 发表于: 2009-10-07
en 学习!
离线robertkun

只看该作者 4楼 发表于: 2009-10-08
学习
                                              简单的生活使人快乐!
离线wd007

只看该作者 5楼 发表于: 2009-10-08
学习一下,好贴,建议斑竹设精
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
只看该作者 6楼 发表于: 2010-05-01
学习
快速回复
限100 字节
 
上一个 下一个