Пытаюсь написать элементарное окно авторизации (в качестве обучения) и столкнулся со следующей проблемой. Имеется определенная кнопка в cpp-файле класса:
pPB_LogIn = new QPushButton("Log in");
Для нее я установил следующие параметры:
pPB_LogIn->setStyleSheet("color: white; background-color: rgb(44,168,231)");
При нажатии на эту кнопку, она выделяется, и её цвет изменяется на мутно-зеленый и остается таким, что не устраивает. Было бы замечательно если бы её цвет как минимум оставался прежним, а ещё лучше изменялся на другой. Читал про QPalette, но ничего конкретно для случая с нажатием не нашел (либо просто балбес и читать не умею). Также видел в документации Qt https://doc.qt.io/qt-5/stylesheet-examples.html , но примеры с
QPushButton{...}
не работают (компилятор ругается). Например, если написать:
QPushButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);}
то компилятор выдаст ошибку:
use of undeclared identifier 'pressed'
К слову, со стилями также есть проблема и в QLineEdit. При добавлении рамки вокруг поля ввода:
pLineEdit_Login->setStyleSheet("background-color: white; border: 1px solid grey");
само поле уменьшается в размерах:
P.S Работю в Manjaro KDE Linux, Qt creator 4.8.1 Qt 5.12.1(GCC 8.2.1)
Создайте файл (обычно с расширением qss, но это как вам удобно).
В нем пропишите:
QPushButton:pressed {
background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #dadbde, stop: 1 #f6f7fa);
}
Далее, этот файл необходимо загрузить и подсунуть в объект приложения:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile file("путь/к/файлу/стилей/style.qss");
if( !file.open(QFile::ReadOnly) )
{
// Что-то пошло не так
}
QString styles = QLatin1String(file.readAll());
// передаем стили в объект приложения
a.setStyleSheet(styles);
MainWindow w;
w.show();
return a.exec();
}
Продвижение своими сайтами как стратегия роста и независимости