首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于更改QWidget的QWidget子代的PyQt5样式表

用于更改QWidget的QWidget子代的PyQt5样式表
EN

Stack Overflow用户
提问于 2020-02-26 20:08:58
回答 1查看 42关注 0票数 0

我有一个里面有HBoxLayoutQWidget。在这个HBoxLayout中有几个按钮和一个QLineEdit对象。使用样式表,我想让它在QLineEdit被聚焦时,QWidget得到一个蓝色的轮廓/边框。

我试过了:

代码语言:javascript
运行
复制
QSearchWidgetStyleSheet = QWidget {background-color: rgb(27,27,27); border: none; margin: 0px; border-radius: 3px; padding: 0px;}
                          QLineEdit:focus {border: 3px solid rgb(100,100,100;}

我的QLineEdit样式表是:

代码语言:javascript
运行
复制
QLineEditStyleSheet = QLineEdit {color: white; background-color: rgb(255,255,255,0); border: none; height: 32px; border-radius: 3px; margin-left: 3px; margin-right: 3px;}

然而,当QLineEdit被聚焦时,对QWidget没有影响。当QLineEdit被聚焦时,为了让QWidget获得边框/轮廓,我应该进行哪些更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-29 16:47:39

QLineEdit:focus将样式应用于QLineEdit,而不是QWidget。虽然子窗口小部件可以占用其父窗口小部件的样式表,但我不认为它在一般样式表语法中以另一种方式工作。相反,您可以仅考虑QWidget来描述场景...当它不在焦点时应该有一个边框,当它在焦点时不应该有边框。

代码语言:javascript
运行
复制
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class Widget(QWidget):

    def __init__(self):
        super().__init__()
        hbox = QHBoxLayout(self)
        hbox.addWidget(QPushButton('Push'))
        hbox.addWidget(QLineEdit())
        self.setAttribute(Qt.WA_StyledBackground, True)
        self.setStyleSheet('''
        Widget {
            border: 3px solid blue;
        }
        Widget:focus {
            border: none;
        }''')

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.setFocus()


class Template(QWidget):

    def __init__(self):
        super().__init__()
        grid = QGridLayout(self)
        grid.addWidget(Widget(), 0, 0)
        self.resize(300, 300)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    gui = Template()
    gui.show()
    sys.exit(app.exec_())

当然,如果您愿意使用其他方法,如信号和插槽,则可以更精确地实现该功能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60413609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档