• 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
    View Code

    main.cpp

     1 #include <windows.h>
     2 #include <winuser.h>
     3 #include <QApplication>
     4 #include "windowDesktop.h"
     5 
     6 BOOL enumUserWindowsCB(HWND hwnd,LPARAM lParam)
     7 {
     8     long wflags = GetWindowLong(hwnd, GWL_STYLE);
     9     if(!(wflags & WS_VISIBLE)) return TRUE;
    10 
    11     HWND sndWnd;
    12     if( !(sndWnd=FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL)) ) return TRUE;
    13     HWND targetWnd;
    14     if( !(targetWnd=FindWindowEx(sndWnd, NULL, L"SysListView32", L"FolderView")) ) return TRUE;
    15 
    16     HWND* resultHwnd = (HWND*)lParam;
    17     *resultHwnd = targetWnd;
    18     return FALSE;
    19 }
    20 
    21 HWND findDesktopIconWnd()
    22 {
    23     HWND resultHwnd = NULL;
    24     EnumWindows((WNDENUMPROC)enumUserWindowsCB, (LPARAM)&resultHwnd);
    25     return resultHwnd;
    26 }
    27 
    28 int main(int argc, char *argv[])
    29 {
    30     QApplication a(argc, argv);
    31 
    32     Dialog w;
    33     HWND desktopHwnd = findDesktopIconWnd();
    34     if (desktopHwnd)
    35         SetParent((HWND)w.winId(), desktopHwnd);
    36     w.setFixedSize(QSize(800, 400));
    37     w.show();
    38     return  a.exec();
    39 }
    View Code

    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
    View Code

    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 }
     9 
    10 Dialog::~Dialog()
    11 {
    12 }
    13 
    14 void Dialog::paintEvent(QPaintEvent *event)
    15 {
    16     QPainter p(this);
    17     p.fillRect(rect(), QColor(0, 0xff, 0, 33));
    18     return;
    19 }
    View Code
  • 相关阅读:
    Mybatis Plus整合PageHelper分页的实现示例
    关于xlrd最新版本不支持.xlsx文件的解决办法
    mysql 错误解决大法 Specified key was too long; max key length is 767 bytes
    php连接redis
    flask通过request.path获取定义view函数的文件和行号
    使用bash内置命令complete来实现参数补全
    linux下对比两个文件夹下python文件的差异
    ssh登录后自动切换到原来的目录
    ssh &2>1 和重定向顺序问题
    wsl1(win10)中安装bochs
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/14150321.html
Copyright © 2020-2023  润新知