zoukankan      html  css  js  c++  java
  • Qt-鼠标点击别处隐藏widget

    相关资料:

    https://download.csdn.net/download/zhujianqiangqq/13131211     代码包下载

    .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     mainwindow.cpp
    21 
    22 HEADERS += 
    23     mainwindow.h
    24 
    25 FORMS += 
    26     mainwindow.ui
    27 
    28 # Default rules for deployment.
    29 qnx: target.path = /tmp/$${TARGET}/bin
    30 else: unix:!android: target.path = /opt/$${TARGET}/bin
    31 !isEmpty(target.path): INSTALLS += target
    32 
    33 RESOURCES +=
    View Code

    main.cpp

     1 #include "mainwindow.h"
     2 
     3 #include <QApplication>
     4 #include <QFile>
     5 
     6 int main(int argc, char *argv[])
     7 {
     8     QApplication a(argc, argv);
     9     MainWindow w;
    10     w.show();
    11     return a.exec();
    12 }
    View Code

    mainwindow.h

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3 
     4 #include <QMainWindow>
     5 #include <QTabWidget>
     6 #include <QLineEdit>
     7 #include <QDebug>
     8 #include <QMouseEvent>
     9 
    10 QT_BEGIN_NAMESPACE
    11 namespace Ui { class MainWindow; }
    12 QT_END_NAMESPACE
    13 
    14 class MainWindow : public QMainWindow
    15 {
    16     Q_OBJECT
    17 
    18 public:
    19     MainWindow(QWidget *parent = nullptr);
    20     ~MainWindow();
    21 protected:
    22     bool eventFilter(QObject *obj, QEvent *event);
    23 
    24 private slots:
    25     void on_pushButton_clicked();
    26 
    27 private:
    28     Ui::MainWindow *ui;
    29 
    30     QWidget *m_pTabCalibration;
    31 };
    32 #endif // MAINWINDOW_H
    View Code

    mainwinodw.cpp

     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 
     4 MainWindow::MainWindow(QWidget *parent)
     5     : QMainWindow(parent)
     6     , ui(new Ui::MainWindow)
     7 {
     8     ui->setupUi(this);
     9     setWindowTitle(QStringLiteral("点击别处隐藏Widget"));
    10 
    11     // 注册事件过滤
    12     installEventFilter(this);
    13 
    14     // 内容显示
    15     m_pTabCalibration = new QWidget(this);
    16     m_pTabCalibration->setGeometry(0, 0, 200, 200);
    17 
    18     QLineEdit *oEdit = new QLineEdit(m_pTabCalibration);
    19     oEdit->setGeometry(10, 10, 100, 30);
    20 
    21     QLineEdit *oEdit2 = new QLineEdit(m_pTabCalibration);
    22     oEdit2->setGeometry(10, 40, 100, 30);
    23 
    24     QLineEdit *oEdit3 = new QLineEdit(m_pTabCalibration);
    25     oEdit3->setGeometry(10, 60, 100, 30);
    26 }
    27 
    28 MainWindow::~MainWindow()
    29 {
    30     delete ui;
    31 }
    32 
    33 // 事件过滤,这里是重点
    34 bool MainWindow::eventFilter(QObject *obj, QEvent *event)
    35 {
    36     // WindowDeactivate事件是鼠标点击了本程序以外的地方。如需其他事件请查看QEvent常量。
    37     if (QEvent::MouseButtonPress == event->type())
    38     {
    39         if(!m_pTabCalibration->geometry().contains(this->mapFromGlobal(QCursor::pos())))
    40         {
    41             m_pTabCalibration->setVisible(false);
    42         };
    43     }
    44     return QObject::eventFilter(obj, event);
    45 }
    46 
    47 
    48 void MainWindow::on_pushButton_clicked()
    49 {
    50     m_pTabCalibration->setVisible(true);
    51 }
    View Code
  • 相关阅读:
    爬虫 效率
    Scrapy 数据存储 图片和文件
    装饰器
    Django 项目部署测试
    Django 项目部署
    Django JS
    三十九、管理信息系统 第三部分 作业
    三十八、模型分离(选做)
    三十七、密码保护
    三十六、实现搜索功能
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/14012762.html
Copyright © 2011-2022 走看看