Как добраться до элемента фокуса в Qt?

Рейтинг: 0Ответов: 2Опубликовано: 25.07.2023

Нужно через stylesheet изменить цвет, размер и размер границы
элемента focus (при перемещении через Tab) для QCheckBox и QPushButton.
(Стиль Breeze на linux)

Подскажите как?

введите сюда описание изображения

Я могу изменить индикатор его границу и фон, в том числе в фокусе, но фокус Бриза изменить никак не получается...
введите сюда описание изображения

Вот пример, в Qt Designer делаю, поэтому код питона не прилагаю:

#Form {
    background: #FFFFFF;
}

#pushButton, #checkBox {
    border: 0px solid #FFFFFF;
    background: #AAF0AA;
}

#pushButton:focus, #checkBox:focus {
    border: 0px solid #FFFFFF;
    background: #F0AAAA;
    outline: 0px solid #FFFFFF;
}

#checkBox:indicator {
    border: 1px solid #FFFFFF;
    background: #FFFFFF;
    outline: 0px solid #FFFFFF;
}

введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения

Ответы

▲ 0

Попробуйте применить стили:

#pushButton, #checkBox {
    border: 2px solid #cb5555;
    border-radius: 10px;
    background: white;
    min-width: 120px;
    min-height: 33px;    
    font-size: 18px;
}
#pushButton:focus, #checkBox:focus {
    border: 4px solid #008000;
    background: #90EE90;
    outline: none;
}
#checkBox {
    border: 2px solid #cb5555;
    border-radius: 10px;
    background: white;
    min-width: 120px;
    min-height: 33px;    
    font-size: 18px;
    padding-left: 15px;
}
#checkBox::indicator {
    width:  15px;
    height: 15px;
    padding: 5px;
}

import sys
from PyQt5.Qt import *


class WindowApp(QWidget):
    def __init__(self):
        super().__init__()

        self.pushButton = QPushButton('Button')
        self.pushButton.setObjectName("pushButton")

        self.checkBox = QCheckBox('CheckBox')
        self.checkBox.setObjectName("checkBox")
        
        self.horizontalLayout = QHBoxLayout(self)
        self.horizontalLayout.addWidget(self.pushButton)
        self.horizontalLayout.addWidget(self.checkBox)

        
Stylesheet = '''
#pushButton, #checkBox {
    border: 2px solid #cb5555;
    border-radius: 10px;
    background: white;
    min-width: 120px;
    min-height: 33px;    
    font-size: 18px;
}
#pushButton:focus, #checkBox:focus {
    border: 4px solid #008000;
    background: #90EE90;
    outline: none;
}
#checkBox {
    border: 2px solid #cb5555;
    border-radius: 10px;
    background: white;
    min-width: 120px;
    min-height: 33px;    
    font-size: 18px;
    padding-left: 15px;
}
#checkBox::indicator {
    width:  15px;
    height: 15px;
    padding: 5px;
}
'''
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    
    app.setStyle("fusion")                                      # !!!          
    app.setStyleSheet(Stylesheet)                               # !!!
    
    w = WindowApp()
    w.resize(200, 100)
    w.show()
    sys.exit(app.exec())

введите сюда описание изображения

введите сюда описание изображения

▲ 0

Я при работе с псевдоклассами использовал такой способ:

self.button1.setStyleSheet(
  ":enabled {background-color: rgb(28, 141, 217}"
  ":hover {background-color: rgb(28, 90, 217)} "
  ":focus {background-color: " + self.rgb_blue_focus + "}"
)