将textEdit提升为自定义的类
mytextedit.h文件**
#ifndef MYTEXTEDIT_H#define MYTEXTEDIT_H#include <QWidget>#include <QTextEdit>class MyTextEdit : public QTextEdit{Q_OBJECTpublic:explicit MyTextEdit(QWidget *parent = nullptr);void focusInEvent(QFocusEvent *event); //覆盖这两个函数void focusOutEvent(QFocusEvent *event);signals:void GetFocus(); //获得焦点信号void LostFocus(); //失去焦点信号public slots:void Slot_GetFocus();void Slot_LostFocus(QString*);};#endif // MYTEXTEDIT_H
mytextedit.cpp文件
#include "mytextedit.h"#include <QDebug>MyTextEdit::MyTextEdit(QWidget *parent) : QTextEdit(parent){this->setFocusPolicy(Qt::StrongFocus);}// 获取焦点事件void MyTextEdit::focusInEvent(QFocusEvent *event){QTextEdit::focusInEvent(event);emit Slot_GetFocus(); // 触发失去焦点槽函数}// 获取焦点函数void MyTextEdit::Slot_GetFocus(){qDebug() << "22222";emit GetFocus(); // 发送获取焦点信号}// 失去焦点事件void MyTextEdit::focusOutEvent(QFocusEvent *event){QTextEdit::focusOutEvent(event);QString c = "22";//this->toPlainText()emit Slot_LostFocus(&c);}// 失去焦点函数void MyTextEdit::Slot_LostFocus(QString*){//qDebug() << "1111";emit LostFocus(); // 发送失去焦点信号}
mainwindow.h文件
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;private slots://定义槽函数处理textEdit focus信号void GetFocus_Fun();void LostFocus_Fun();};#endif // MAINWINDOW_H
mainwindow.cpp文件**
#include "mainwindow.h"#include "ui_mainwindow.h"#include <mytextedit.h>#include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);// 在widget的构造函数绑定textEdit的focus信号connect(ui->textEdit, SIGNAL(GetFocus()), this, SLOT(GetFocus_Fun()));connect(ui->textEdit, SIGNAL(LostFocus()), this, SLOT(LostFocus_Fun()));}MainWindow::~MainWindow(){delete ui;}// 焦点失去时,背景颜色变红void MainWindow::GetFocus_Fun(){//在处理textEdit 函数里我们将textEdit背景色变为红色ui->textEdit->setStyleSheet("background-color:red");qDebug() << "改变了颜色";}// 焦点失去时,背景颜色变白void MainWindow::LostFocus_Fun(){//在处理textEdit 函数里我们将textEdit背景色变为红色ui->textEdit->setStyleSheet("background-color:white");qDebug() << "改变了颜色";}
获取焦点状态
失去焦点状态
test3.zip
参考文档:
