- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过图形框架类在屏幕上绘制 1 个数字。我希望 '1' 的填充方法类似于
(来源:qt-project.org)
但是我绘制的“1”的画笔就像下面代码中的黄色 SolidBrush(丑陋的粗体黄色“1”)。你能帮我看看它有什么问题吗?
QGraphicsSimpleTextItem digit_1 = new QGraphicsSimpleTextItem;
digit_1->setText(QString::number(1));
digit_1->setPen(QPen(QColor("black")));
QLinearGradient gradient(digit_1->boundingRect().topLeft(),
digit_1->boundingRect().bottomRight());
gradient.setColorAt(0, Qt::white);
gradient.setColorAt(1, Qt::yellow); // yellow is for example
QBrush brush(gradient);
brush.setStyle(Qt::BrushStyle::LinearGradientPattern);
digit_1->setBrush(brush);
digit_1->setFont(QFont("courier", 35, QFont::Black));
提前致谢。
最佳答案
您的问题很可能是因为您在将字体大小设置为比默认字体大得多的值之前,将渐变的“区域”基于项目的边界矩形。
因此,您获得的边界矩形比您的实际边界矩形小得多。由于默认的展开方法是填充,因此您很可能只会看到一种颜色(或者没有足够的渐变以使其实际可见)。
因此,在创建渐变之前,将您的 setFont
调用移到顶部。您可以将 setStyle
放在画笔上,这是根据渐变自动确定的。 (事实上,您可以完全放弃画笔并使用 setBrush
中的渐变。)
通过设置渐变的方式,您将获得“对角线”渐变。如果您想要从上到下,请改用左上角和左下角。
#include <QtGui>
class W: public QGraphicsView
{
Q_OBJECT
public:
W(QWidget *parent = 0)
: QGraphicsView(parent)
{
QGraphicsSimpleTextItem *item = new QGraphicsSimpleTextItem;
item->setText("Stack Overflow");
item->setPen(QPen(Qt::red));
item->setFont(QFont("courier", 60, QFont::Bold));
QLinearGradient lgrad(item->boundingRect().topLeft(),
item->boundingRect().bottomLeft());
lgrad.setColorAt(0.0, Qt::red);
lgrad.setColorAt(1.0, Qt::yellow);
item->setBrush(lgrad);
QGraphicsScene *scene = new QGraphicsScene;
scene->setBackgroundBrush(QBrush(Qt::black));
scene->addItem(item);
setScene(scene);
}
};
关于qt - QLinearGradient 不能与 QBrush 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760450/
下面的代码有什么区别, QGraphicsScene * scence = new QGraphicsScene(); QBrush *brush = new QBrush((QColor(
我想通过图形框架类在屏幕上绘制 1 个数字。我希望 '1' 的填充方法类似于 (来源:qt-project.org) 但是我绘制的“1”的画笔就像下面代码中的黄色 SolidBrush(丑陋的粗体黄色
void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); QBrush br; br.setColor(
我正在尝试将 Qt4 中 QMdiArea 小部件的背景 QBrush 设置为系统颜色的渐变。 这是我现在的一些代码: QPrios::QPrios(int &argc, char **argv):
如何使用 RBG 值为 QBrush 设置自定义颜色?然后在 GraphicsView 上用画笔画一个矩形。 到目前为止我已经尝试过: QBrush *goldBrush = new QBrush(Q
我正在尝试使用 QImage 为 QT 渲染自定义图像,但到目前为止我的代码没有任何进展。我不想从文件加载图像,我想使用 QImage 类和 QBrush 类以及这需要的其他内容。我不太擅长在 API
目前我用它来创建一个 QBrush: QBrush *goldBrush = new QBrush(QColor(212,175,55)); scene->addRect(0,415,20,50,no
我是一名优秀的程序员,十分优秀!