• 15214阅读
  • 15回复

如何更改button的文字方向 [复制链接]

上一主题 下一主题
离线hellogritty
 

只看楼主 正序阅读 楼主  发表于: 2010-03-08

    请教各位达人,有没有什么函数能搞定
  
  或者用qss,可是只看到了text-align,没有看到text-direction

    QAbstractButton也没有rotate函数

  
离线15805201952

只看该作者 15楼 发表于: 2021-03-23
回 hellogritty 的帖子
hellogritty:感谢yb824提供的代码,文字转过来了,可是按钮还是原来的方向,没有随文字一起转,
要想按钮也转,该怎么做呢? (2010-03-09 09:35) 

这段代码是对QPushButton进行重定义吗,那我使用MyButton定义了一个按键,如何使用button->paintEvent();使按键上的文字旋转呀?
void MyButton::paintEvent(QPaintEvent *event)这个函数中的event不知道如何给。
我把代码改了下,但是按键上的字幕没有旋转。

//void MyButton::paintEvent(QPaintEvent *event)
void MyButton::paintEvent(void)
{
    QString txt = this->text();
    setText("");
//    QPushButton::paintEvent(event);
    setText(txt);
    QPainter p(this);
    p.rotate(90);
    p.translate(0, -width());
    QRect rect(this->rect().topLeft(), QSize(this->rect().height(), this->rect().width()));
    p.drawText(rect, Qt::AlignCenter, this->text() );
    p.end();

}
离线15805201952

只看该作者 14楼 发表于: 2021-03-23
回 yb824 的帖子
yb824:试下~~~
.h
#include <QPushButton>
class MyButton : public QPushButton
....... (2010-03-08 22:18) 

这段代码是对QPushButton进行重定义吗,那我使用MyButton定义了一个按键,如何使用button->paintEvent();使按键上的文字旋转呀?
void MyButton::paintEvent(QPaintEvent *event)这个函数中的event不知道如何给。
我把代码改了下,但是按键上的字幕没有旋转。

//void MyButton::paintEvent(QPaintEvent *event)
void MyButton::paintEvent(void)
{
    QString txt = this->text();
    setText("");
//    QPushButton::paintEvent(event);
    setText(txt);
    QPainter p(this);
    p.rotate(90);
    p.translate(0, -width());
    QRect rect(this->rect().topLeft(), QSize(this->rect().height(), this->rect().width()));
    p.drawText(rect, Qt::AlignCenter, this->text() );
    p.end();

}
离线many_many
只看该作者 13楼 发表于: 2010-05-04
引用第11楼hellogritty于2010-03-09 11:22发表的 :
回yb824,这段代码CPU占用很高啊,是setText(txt)引起的,把这行删了以后,txt又显示不出来(虽然有painter.drawText())。有没有什么好的解决方法呢?



那是因为你坐标没有计算正确!
联系方式:
lishenzhi123@163.com
QQ:904421718
离线hehui

只看该作者 12楼 发表于: 2010-03-18
选用@开头的字体试试~
离线hellogritty

只看该作者 11楼 发表于: 2010-03-09
引用第10楼yb824于2010-03-09 09:53发表的  :
把高度设大一点,宽度设小一点,感觉就是竖着的了


回yb824,这段代码CPU占用很高啊,是setText(txt)引起的,把这行删了以后,txt又显示不出来(虽然有painter.drawText())。有没有什么好的解决方法呢?
[ 此帖被hellogritty在2010-03-09 14:16重新编辑 ]
离线yb824
只看该作者 10楼 发表于: 2010-03-09
把高度设大一点,宽度设小一点,感觉就是竖着的了
离线hellogritty

只看该作者 9楼 发表于: 2010-03-09
引用第8楼yb824于2010-03-08 22:18发表的  :
试下~~~
.h
#include <QPushButton>
class MyButton : public QPushButton
.......


感谢yb824提供的代码,文字转过来了,可是按钮还是原来的方向,没有随文字一起转,
要想按钮也转,该怎么做呢?
离线yb824
只看该作者 8楼 发表于: 2010-03-08
试下~~~
.h
#include <QPushButton>

class MyButton : public QPushButton
{
public:
    MyButton(QWidget* parent=0);
protected:
    void paintEvent(QPaintEvent *event);
};
.cpp

MyButton::MyButton(QWidget *parent)
    :QPushButton(parent)
{

}

void MyButton::paintEvent(QPaintEvent *event)
{
    QString txt = this->text();
    setText("");
    QPushButton::paintEvent(event);
    setText(txt);
    QPainter p(this);

    p.rotate(90);
    p.translate(0, -width());
    QRect rect(this->rect().topLeft(),
               QSize(this->rect().height(), this->rect().width()));
    p.drawText(rect, Qt::AlignCenter, this->text() );
    p.end();

}
离线benbenmajia

只看该作者 7楼 发表于: 2010-03-08
做个位图吧
安然.....
离线hellogritty

只看该作者 6楼 发表于: 2010-03-08
引用第4楼benbenmajia于2010-03-08 16:59发表的  :
多加几个“n”?
hnen。。。。。。


我的button上显示的是英文,要每个字母都能转90度那样
离线benbenmajia

只看该作者 5楼 发表于: 2010-03-08
也可以像小夜那么做,做一个位图,显示在button上~.
安然.....
离线benbenmajia

只看该作者 4楼 发表于: 2010-03-08
多加几个“\n”?
h\ne\n。。。。。。
安然.....
离线hellogritty

只看该作者 3楼 发表于: 2010-03-08
引用第1楼benbenmajia于2010-03-08 16:55发表的  :
呃,这样做好吗?
QString  ss  = "HellonWorld!";


这样做只是把HelloWorld分为两行写,我想要的是文字竖排的效果
离线benbenmajia

只看该作者 2楼 发表于: 2010-03-08
\n很好很强大
PS:15秒内不能发帖。。
安然.....
离线benbenmajia

只看该作者 1楼 发表于: 2010-03-08
呃,这样做好吗?
QString  ss  = "Hello\nWorld!";
安然.....
快速回复
限100 字节
 
上一个 下一个