我有一个黑色背景上带有白色文本的Qlabel。在此屏幕中,我创建了一个白色矩形,可通过以下方式更改尺寸:
QGraphicsRectItem* rect;
rect->setRect(0, START_HEIGHT, 0+variable, HEIGHT);
通过调用修改“变量”值并重新创建矩形的函数,可以更改其大小。这个矩形是白色的,当碰巧到达标签时,最后一个消失(白色白色)。
我想知道当标签与矩形相交时,如何使标签内的文本颜色变黑(只有相交,因为如果所有标签都变为黑色,则只能看到矩形上的部分)。
[这是我在Google上找到的一个示例(正在寻找PorterDuff,它似乎在android上做类似的事情)。这是不同的,但是可以成为可视化我想要获得的一个很好的例子。
如果有解决方案或提示,请先感谢,谢谢] =>
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元素(未更改名称,背景为黑色)>
文本为“ CCC”,我想将一半黑色和一半白色可视化
我有一个黑色背景上带有白色文本的Qlabel。在此屏幕中,我创建了一个白色矩形,该矩形通过以下方式更改尺寸:QGraphicsRectItem * rect; rect-> setRect(0,START_HEIGHT,0 + variable,...
您可以创建自己的实现来更改项目的QPainter::compositionMode()
:
QPainter::compositionMode()