如题:
在通过键盘改变焦点到不同的QLineEdit上时获取到焦点的控件改变颜色,失去焦点后变回原来的颜色。我用eventFilter事件过滤没有效果,还有什么其他办法吗?
控件 qt 焦点 颜色
------解决方案--------------------
设置样式:
QLineEdit{
border:1px solid gray;
}
QLineEdit:hover{
border-width:2px;
border-color:rgb(170, 170, 255);
}
QLineEdit:focus {
border-width:2px;
border-color:rgb(170, 170, 255);
}
注意:QLineEdit:focus这是获取焦点的样式!
------解决方案--------------------
还有一种方法,
class CEdit : public QLineEdit {
protected:
void focusInEvent(QEvent *);
void focusOutEvent(QEvent *);
};
重载上面两个函数,在这两个函数了,改变焦点的颜色
------解决方案--------------------
3.使用getFocusWidget();,得到获得焦点的控件,然后改变颜色
QWidget *pWidget = QApplication::getFocusWidget();
------解决方案--------------------

void foo() {
QWidget *w = new QWidget();
QLineEdit *edit1 = new QLineEdit();
QLineEdit *edit2 = new QLineEdit();
QVBoxLayout *layout = new QVBoxLayout();
layout->addWidget(edit1);
layout->addWidget(edit2);
w->setLayout(layout);
QString style("QLineEdit{border: 3px solid black;}"
"QLineEdit:focus{border: 3px solid red;}");
w->setStyleSheet(style);
w->show();
}