Как сделать QGraphicsItem из полупрозрачного цвета? - PullRequest
1 голос
/ 08 марта 2020

Я работаю над QT GUI, который аннотирует изображения из графического представления с помощью различных фигур, в настоящее время разрабатывая самую простую форму - прямоугольник. Мне удалось добавить прямоугольник к изображению после нажатия кнопки и переместить его с помощью функции setFlag. Что мне нужно сделать сейчас, это убедиться, что прямоугольник является полупрозрачным, чтобы пользователь мог видеть, что именно аннотировано. Мой код для кнопки прямоугольника:

void MainWindow::on_pushButton_11_clicked()  // rectangle shape creator
{
    QBrush redBrush(Qt::red);
    QBrush blueBrush(Qt::blue);
    QPen blackpen(Qt::black);
    blackpen.setWidth(3);
    rectangle = scene->addRect(-100,-100,50,50,blackpen,blueBrush);
    rectangle->setFlag(QGraphicsItem::ItemIsMovable);
}

Я изучил документацию Qt и обнаружил, что функция непрозрачности из библиотеки QGraphicsItem, вероятно, будет решением этой проблемы, но я не смог найти способ реализовать это. Любая помощь или предложения приветствуются.

1 Ответ

1 голос
/ 08 марта 2020

Существует несколько решений:

  • Используйте метод setOpacity(), который сделает элементы прозрачными в заливке и цвете границы.

    rectangle->setOpacity(.2);
    
  • Если вы хотите установить прозрачность в цвете заливки, вы должны установить прозрачный QColor на QBru sh.

    QColor brush_color(Qt::blue);
    brush_color.setAlpha(50);
    QPen blackpen(Qt::black);
    blackpen.setWidth(3);
    rectangle = scene->addRect(-100, -100, 50, 50, blackpen, brush_color);
    rectangle->setFlag(QGraphicsItem::ItemIsMovable);
    
  • Если вы хотите установить прозрачность прозрачность на границе, тогда вы должны установить прозрачный QColor для QBru sh.

    QBrush blueBrush(Qt::blue);
    QColor black_color(Qt::black);
    black_color.setAlpha(50);
    QPen blackpen(black_color);
    blackpen.setWidth(3);
    rectangle = scene->addRect(-100, -100, 50, 50, blackpen, blueBrush);
    rectangle->setFlag(QGraphicsItem::ItemIsMovable);
    
...