您的位置:首页 > 编程语言 > Qt开发

Qt5.8 异形窗口

2017-06-14 10:10 239 查看
#ifndef QT_SHAPEDWINDOW_H
#define QT_SHAPEDWINDOW_H

#include <QPainter>
#include <QtWidgets/QMainWindow>
#pragma execution_character_set("utf-8")

class Qt_Shapedwindow : public QMainWindow
{
Q_OBJECT

public:
Qt_Shapedwindow(QWidget *parent = 0);
~Qt_Shapedwindow();

private:
void paintEvent(QPaintEvent *);
};

#endif // QT_SHAPEDWINDOW_H


#include "qt_shapedwindow.h"
#include <QtWidgets/QPushButton>

Qt_Shapedwindow::Qt_Shapedwindow(QWidget *parent)
: QMainWindow(parent)
{
this->setWindowOpacity(1); //窗口整体透明度,0-1 从全透明到不透明
this->setWindowFlags(Qt::FramelessWindowHint); //设置无边框风格
this->setAttribute(Qt::WA_TranslucentBackground); //设置背景透明,允许鼠标穿透

resize(1000, 666);

QPixmap pixmap;
pixmap.load("f:\\nn\\按钮1.png");

int nWidth = pixmap.width() * 2;
int nHeight = pixmap.height() * 2;

QPushButton * pBtn = new QPushButton(pixmap, "", this);

pBtn->resize(pixmap.width(), pixmap.height());
pBtn->move(1000 - pixmap.width(), 0);
connect(pBtn, SIGNAL(clicked()), this, SLOT(close()));
}

Qt_Shapedwindow::~Qt_Shapedwindow()
{

}
void Qt_Shapedwindow::paintEvent(QPaintEvent *)
{
QPainter p(this);
QPixmap pix;
pix.load("f:\\nn\\123.png");
p.drawPixmap(0, 0, pix);
}

调用:
#include "qt_shapedwindow.h"
#include <QtWidgets/QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Qt_Shapedwindow w;
w.show();
return a.exec();
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: