QlineEdit得到和失去焦点的时候改变背景色,用C++代码实现
时间: 2024-04-08 18:28:58 浏览: 219
QT按钮点击切换QLineEdit焦点
可以通过重写QLineEdit的focusInEvent()和focusOutEvent()方法来实现获取和失去焦点时改变背景色的效果。下面是一个示例代码:
```cpp
#include <QApplication>
#include <QLineEdit>
#include <QPalette>
class CustomLineEdit : public QLineEdit
{
public:
CustomLineEdit(QWidget *parent = nullptr) : QLineEdit(parent) {}
protected:
void focusInEvent(QFocusEvent *event) override
{
QPalette palette = this->palette();
palette.setColor(QPalette::Base, Qt::yellow); // 设置获取焦点时的背景色
this->setPalette(palette);
QLineEdit::focusInEvent(event);
}
void focusOutEvent(QFocusEvent *event) override
{
QPalette palette = this->palette();
palette.setColor(QPalette::Base, Qt::white); // 设置失去焦点时的背景色
this->setPalette(palette);
QLineEdit::focusOutEvent(event);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CustomLineEdit lineEdit;
lineEdit.show();
return a.exec();
}
```
在上述代码中,我们创建了一个自定义的QLineEdit类CustomLineEdit,重写了focusInEvent()和focusOutEvent()方法,在获取和失去焦点时分别改变背景色。获取焦点时,使用Qt::yellow颜色,失去焦点时,使用Qt::white颜色。
在主函数中,我们创建了CustomLineEdit的实例并显示出来。运行程序后,当输入框获得焦点时,背景色会变为黄色;失去焦点时,背景色会恢复为白色。
阅读全文