将textEdit提升为自定义的类
mytextedit.h文件**
#ifndef MYTEXTEDIT_H
#define MYTEXTEDIT_H
#include <QWidget>
#include <QTextEdit>
class MyTextEdit : public QTextEdit
{
Q_OBJECT
public:
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_OBJECT
public:
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
参考文档: