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 +=
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 }
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
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 }
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我