与qt中的图像相交时如何更改标签颜色?

问题描述 投票:0回答:1

我有一个黑色背景上带有白色文本的Qlabel。在此屏幕中,我创建了一个白色矩形,可通过以下方式更改尺寸:

QGraphicsRectItem* rect;
rect->setRect(0, START_HEIGHT, 0+variable, HEIGHT);

通过调用修改“变量”值并重新创建矩形的函数,可以更改其大小。这个矩形是白色的,当碰巧到达标签时,最后一个消失(白色白色)。

我想知道当标签与矩形相交时,如何使标签内的文本颜色变黑(只有相交,因为如果所有标签都变为黑色,则只能看到矩形上的部分)。

[这是我在Google上找到的一个示例(正在寻找PorterDuff,它似乎在android上做类似的事情)。这是不同的,但是可以成为可视化我想要获得的一个很好的例子。

enter image description here

如果有解决方案或提示,请先感谢,谢谢] =>

Edit

:这是一个最小且可复制的示例
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label->raise();
ui->label->setText("CCC");

//set scene
    scene= new QGraphicsScene();
    ui->graphicsView->setScene(scene);
    ui->graphicsView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    ui->graphicsView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    ui->graphicsView->setStyleSheet("background: transparent;");
    ui->graphicsView->setFrameShadow(QFrame::Raised);


timers = new QTimer(this);
connect(timers, &QTimer::timeout, this,&MainWindow::grow_my_child);
timers->start(10);
}
void MainWindow::grow_my_child()
{
static int x=0;
rect = new QGraphicsRectItem();

rect->setBrush(Qt::white);
rect->setPen(Qt::NoPen);

scene->addItem(rect);

rect->setVisible(true);
rect->setRect(0,0,0+x,200);
x++;

if(x ==500){
   timers->stop();
}
}

和标题:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <Qlabel>
#include <QGraphicsOpacityEffect>
#include <QPropertyAnimation>
#include <QTimer>
#include <QDebug>
#include <QPen>
#include <QFontDatabase>
#include <QSize>
#include <QDateTime>
#include <QParallelAnimationGroup>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();

private:
Ui::MainWindow *ui;
QTimer * timers;
QGraphicsScene* scene;
QGraphicsRectItem* rect;
void grow_my_child();

};
#endif // MAINWINDOW_H

。ui文件中只有一个标签和一个graphicview元素(未更改名称,背景为黑色)>

一旦矩形到达标签,结果为:enter image description here

文本为“ CCC”,我想将一半黑色和一半白色可视化

我有一个黑色背景上带有白色文本的Qlabel。在此屏幕中,我创建了一个白色矩形,该矩形通过以下方式更改尺寸:QGraphicsRectItem * rect; rect-> setRect(0,START_HEIGHT,0 + variable,...

c++ qt qwidget qlabel
1个回答
0
投票

您可以创建自己的实现来更改项目的QPainter::compositionMode()

QPainter::compositionMode()
© www.soinside.com 2019 - 2024. All rights reserved.