QGraphicsWidget嵌入QTextEdit背景设置透明

这段代码展示了如何在C++中创建一个透明的QTextEdit组件。通过设置字体、边框样式、透明背景以及窗口属性,实现了无边框且内容透明的文本编辑框,并将其添加到QGraphicsScene中进行布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找了很多,多数都是打胡乱说,气死,直接上代码,拷贝直接可以使用:

class CAnnotationBlock : public QGraphicsWidget

void CAnnotationBlock::initUi()
{
    QTextEdit *edit = new QTextEdit;
    edit->setFixedSize(boundingRect().width(),boundingRect().height());
    //设置文字格式
    QFont font;
    font.setPointSize( 20 );
    font.setFamily("Microsoft YaHei");
    edit->setFont(font);
    //边框样式
    edit->setFrameStyle(QFrame::NoFrame);
    //设置QTextEdit透明
    QPalette pal = edit->palette();
    pal.setColor(QPalette::Background, QColor(0,0,0,255));
    edit->setPalette(pal);
    edit->setWindowFlags(Qt::FramelessWindowHint | edit->windowFlags());
    edit->setAttribute(Qt::WA_TranslucentBackground);
    QWidget *viewport = edit->viewport();
    viewport->setWindowFlags(Qt::FramelessWindowHint | viewport->windowFlags());
    viewport->setAttribute(Qt::WA_TranslucentBackground);

    //添加到场景
    QGraphicsProxyWidget *textEditProxy   = m_scene->addWidget(edit);
    //添加到布局
    QGraphicsLinearLayout *layout = new QGraphicsLinearLayout;
    layout->setContentsMargins(0,0,0,0);
    layout->addItem((QGraphicsWidget *)textEditProxy);//qt4不需要强转,qt5必须强转
    //设置无边框
    setWindowFlags(Qt::FramelessWindowHint);
    setLayout(layout);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值