Странно, на моей копии Qt, использующей QLineEdit, он работает как требуется: focus, используя
QLineEdit:focus
{
border: 2px solid #006080;
}
Вы уверены, что у вас нет дочернего стиля где-то ниже по линии, перекрывающего это?Поскольку он находится в MainWindow, он будет первым, что будет отменено.
Потенциальный обходной путь - использование фильтра событий:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->lineEdit->installEventFilter( this );
ui->lineEdit_2->installEventFilter( this );
}
...
bool MainWindow::eventFilter( QObject *object, QEvent *event )
{
QLineEdit* edit = qobject_cast< QLineEdit* >( object );
if( edit != NULL )
{
if( event->type( ) == QEvent::FocusIn )
{
edit->setStyleSheet( QString( "border: 10px solid #000000;" ) );
}
else if( event->type( ) == QEvent::FocusOut )
{
edit->setStyleSheet( QString( "border: 1px solid #000000;" ) );
}
}
}
Конечно, QStyleSheets - это просто QStrings, поэтомуВы можете сохранить заранее определенные стили для использования.