是的,这是可能的.关键是QWidget的Qt :: WA_TranslucentBackground属性
这是一个简单的类,绘制一个圆形半透明窗口,红色背景50%alpha.
TranslucentRoundWindow.h:
#include <QWidget> class TranslucentRoundWindow : public QWidget { public: TranslucentRoundWindow(QWidget *parent = 0); virtual QSize sizeHint() const; protected: virtual void paintEvent(QPaintEvent *paintEvent); };
TranslucentRoundWindow.cpp:
#include <QtGui> #include "TranslucentRoundWindow.h" TranslucentRoundWindow::TranslucentRoundWindow(QWidget *parent) : QWidget(parent,Qt::FramelessWindowHint) { setAttribute(Qt::WA_TranslucentBackground); } QSize TranslucentRoundWindow::sizeHint() const { return QSize(300,300); } void TranslucentRoundWindow::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setPen(Qt::nopen); painter.setBrush(QColor(255,127)); painter.drawEllipse(0,width(),height()); }
如果您想要使用鼠标移动此窗口,则必须覆盖mousepressEvent,mouseMoveEvent和mouseReleaseEvent.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。