qt - 如何向 QGraphicsLineItem 添加大纲?
问题描述
我想要一个 QGraphicsLineItem ,它由某种颜色勾勒出来。
我试过使用
QGraphicsLineItem::setColor(QColor(...))
然而,这只描绘了内部。
我必须调用什么函数来创建大纲?
更具体地说,假设这是一个普通的 QGraphicsLineItem
--------------------------------------
10px
green QGraphicsLineItem
--------------------------------------
我想要的是边界之外完全不同的(纯色)颜色,就像这样,
--------------------------------------
2px blue
--------------------------------------
10px
green
--------------------------------------
2px blue
--------------------------------------
所以阴影效果不起作用,希望这很清楚。
解决方案
解决方案 1
添加轮廓的一种方法QGraphicsLineItem
是使用具有零偏移的QGraphicsDropShadowEffect 。
注意:这种方法不需要子类化,但它不是那么健壮,因为它不允许精确设置刻度并且轮廓不实体。但是,在某些情况下,这可能工作得很好。
以下是如何执行此操作的示例:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
auto *view = new QGraphicsView(this);
auto *item = new QGraphicsLineItem(50, 50, 250, 150);
auto *effect = new QGraphicsDropShadowEffect(this);
effect->setColor(Qt::blue);
effect->setOffset(0);
effect->setBlurRadius(10);
item->setPen(QPen(Qt::green, 10));
item->setGraphicsEffect(effect);
view->setScene(new QGraphicsScene(this));
view->scene()->addItem(item);
setCentralWidget(view);
resize(300, 200);
}
此示例产生以下结果:
推荐阅读
- laravel - Laravel ErrorException - 路径无效
- firebase - 适用于多个域的 Firebase 云消息传递
- php - Ack 在数组中查找未引用的字符串 php 7.2
- java - 没有 JApplet 的 ColorBox
- typescript - 调用 http get 后调用 http post
- php - 在 Woocommerce 中获取所有带有空简短描述的产品 ID
- arrays - 是否可以通过mapmessage在jmeter中的JMS消息中发送字节数组?
- php - Laravel 5.x whereHas many-to-many with a extra pivot column
- r - 通过官员将多个文本项目符号添加到 PowerPoint 幻灯片
- javascript - 如何将文本从 div 移动到输入值?