实现不带窗口显示图片
头文件;
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
protected:
void mousePressEvent(QMouseEvent *e);
void mouseMoveEvent(QMouseEvent *e);
void paintEvent(QPaintEvent *p);
private:
QPoint p;
};
#endif // WIDGET_H
源文件:
#include "widget.h"
#include<QMouseEvent>
#include<QPixmap>
#include<QBitmap>
#include<QPaintEvent>
#include<QPainter>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
setWindowFlags(Qt::FramelessWindowHint | windowFlags());//去边框 与去背景需要同时使用
setAttribute(Qt::WA_TranslucentBackground);//去背景
}
void Widget::mousePressEvent(QMouseEvent *e)
{
if(e->button()==Qt::LeftButton)
{
p=e->globalPos()-frameGeometry().topLeft();
}
else
{
close();
}
}
void Widget::mouseMoveEvent(QMouseEvent *e)
{
if(e->buttons()&&Qt::LeftButton)
{
move(e->globalPos()-p);
}
}
void Widget::paintEvent(QPaintEvent *p)
{
QPainter painter(this);
painter.drawPixmap(0,0,QPixmap(":/up.png"));
}
Widget::~Widget()
{
}