在网上找了很多,多数都是打胡乱说,气死,直接上代码,拷贝直接可以使用:
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);
}