【发布时间】:2015-06-25 06:59:19
【问题描述】:
我已经实现了一个类似于这个例子的定向 QPushButton(在我的例子中是一个绘图的轴标签): Vertical QLabel, or the equivalent? 这是当前的paintEvent:
void OrientedPushButton::paintEvent(QPaintEvent* ev) {
if (mOrientation == Qt::Vertical) {
QPainter p(this);
// support focus/hover styles
QStyleOption opt;
opt.init(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
// text render hint
p.setRenderHints(QPainter::TextAntialiasing);
p.rotate(-90);
QRect r(0, 0, -height(), width());
p.drawText(r, Qt::AlignHCenter | Qt::AlignVCenter, QPushButton::text());
}
else // default drawing for horizontal buttons
QPushButton::paintEvent(ev);
}
渲染的 QPushButton 如下所示:
尤其是“A”,可以看到垂直的 QPushButton 渲染得更清晰。有没有办法渲染垂直文本,以便应用与水平文本相同的抗锯齿?
[编辑] 我尝试了@PavelStrakhov 提出的像素图渲染,虽然这种方法对垂直文本应用了抗锯齿,但它不能解决清除类型问题:
【问题讨论】:
-
尝试添加p.setRenderHint(QPainter::Antialiasing);
-
如果您手动渲染水平文本(而不是使用默认实现),它是否正确应用抗锯齿?
-
@Milovidov 和
p.setRenderHints(QPainter::TextAntialiasing | QPainter::Antialiasing);不能解决问题 -
@PavelStrakhov 感谢您添加图片。如果我自己渲染水平文本(没有
p.rotate(-90);),抗锯齿与QPushButton::paintEvent(ev);相同。