Qt-透明窗体之异型窗体
相关资料:
https://download.csdn.net/download/zhujianqiangqq/13713144 代码包下载
.pro
1 QT += core gui 2 3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 4 5 CONFIG += c++11 6 7 # The following define makes your compiler emit warnings if you use 8 # any Qt feature that has been marked deprecated (the exact warnings 9 # depend on your compiler). Please consult the documentation of the 10 # deprecated API in order to know how to port your code away from it. 11 DEFINES += QT_DEPRECATED_WARNINGS 12 13 # You can also make your code fail to compile if it uses deprecated APIs. 14 # In order to do so, uncomment the following line. 15 # You can also select to disable deprecated APIs only up to a certain version of Qt. 16 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 17 18 SOURCES += \ 19 main.cpp \ 20 windowDesktop.cpp 21 22 HEADERS += \ 23 windowDesktop.h 24 25 FORMS += \ 26 mainwindow.ui 27 28 LIBS += -lUser32 29 30 # Default rules for deployment. 31 qnx: target.path = /tmp/$${TARGET}/bin 32 else: unix:!android: target.path = /opt/$${TARGET}/bin 33 !isEmpty(target.path): INSTALLS += target 34 35 RESOURCES += \ 36 resource.qrc
main.cpp
1 #include <windows.h> 2 #include <winuser.h> 3 #include <QApplication> 4 #include "windowDesktop.h" 5 6 int main(int argc, char *argv[]) 7 { 8 QApplication a(argc, argv); 9 10 Dialog w; 11 w.setFixedSize(QSize(800, 400)); 12 w.show(); 13 return a.exec(); 14 }
windowDesktop.h
1 #ifndef WINDOWDESKTOP_H 2 #define WINDOWDESKTOP_H 3 4 #include "QObject" 5 #include "QDialog" 6 #include "QLineEdit" 7 #include "QPainter" 8 #include "QWidget" 9 #include "QBitmap" 10 11 class Dialog : public QWidget 12 { 13 Q_OBJECT 14 public : 15 Dialog(QWidget *parent = 0); 16 ~Dialog(); 17 18 virtual void paintEvent(QPaintEvent *event); 19 }; 20 21 22 #endif // WINDOWDESKTOP_H
windowDesktop.cpp
1 #include "windowDesktop.h" 2 3 Dialog::Dialog(QWidget *parent) 4 : QWidget(parent) 5 { 6 // 创建个LineEdit用来测试焦点 7 QLineEdit *le = new QLineEdit(this); 8 le->setGeometry(300, 150, 100, 30); 9 10 this->setAttribute(Qt::WA_TranslucentBackground, true); 11 } 12 13 Dialog::~Dialog() 14 { 15 } 16 17 void Dialog::paintEvent(QPaintEvent *event) 18 { 19 QBitmap bitMap(width( ), height( )); 20 //创建一个跟窗口一样的bitMap 21 QPainter bitMapPainter(&bitMap); 22 bitMapPainter.setPen(Qt::GlobalColor::color0); 23 //先填充 24 bitMapPainter.drawRect(0, 0, width( ), height( )); 25 //下面换成你自己的图片。 26 QPixmap imageTest(":/new/prefix1/1408266602_762236.png"); 27 //然后bitMap就有了你的图片。 28 bitMapPainter.drawPixmap(0, 0, imageTest.width( ), imageTest.height( ), imageTest); 29 setMask(bitMap); 30 }
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我