translucentwidget.h:
#ifndef TRANSLUCENTWIDGET_H
#define TRANSLUCENTWIDGET_H
#include <QWidget>
class translucentWidget:public QWidget
{
Q_OBJECT
public:
translucentWidget(QWidget*p = NULL, bool transparent = true);
~translucentWidget();
protected slots:
private:
void paintEvent(QPaintEvent*e);
};
#endif
translucentwidget.cpp:
#include "translucentwidget.h"
#include <QDebug>
#include <QEvent>
#include <QPixmap>
#include <QPainter>
translucentWidget::translucentWidget(QWidget*p, bool trans)
:QWidget(p)
{
setAttribute(Qt::WA_TranslucentBackground, trans);
setAutoFillBackground(true);
}
translucentWidget::~translucentWidget()
{
}
void translucentWidget::paintEvent( QPaintEvent*e)
{
QPainter p(this);
p.setClipRect(rect());
QPixmap pixmap("./pic/fine.png");
p.drawPixmap(pixmap.rect(), pixmap);
}
mainwin.h
#ifndef MAINWIN_H
#define MAINWIN_H
#include <QWidget>
class QLabel;
class MainWin: public QWidget
{
Q_OBJECT
public:
MainWin(QWidget*p = NULL, Qt::WindowFlags f = 0);
~MainWin();
protected slots:
private:
QLabel* label;
};
#endif
mainwin.cpp
#include "mainwin.h"
#include <QDebug>
#include <QLabel>
#include <QPainter>
#include <QVBoxLayout>
#include "translucentwidget.h"
MainWin::MainWin(QWidget*p, Qt::WindowFlags f)
:QWidget(p,f)
{
resize(300,160);
// setWindowTitle("Weather Report");
setAttribute(Qt::WA_TranslucentBackground);
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(new translucentWidget(this, true));
}
MainWin::~MainWin()
{
}
main.cpp
#include <QApplication>
#include "mainwin.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MainWin mw;
mw.setGeometry(500,0,300,160);
mw.setFixedSize(300,160);
mw.setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
mw.show();
return app.exec();
}