精华内容
下载资源
问答
  • 自定义控件时基类用了QWidget,发现qss设置不起作用,需要重载其paintEvent函数即可; void TitleBar::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QStyleOption opt; opt.init(this); QPainter p...

    自定义控件时基类用了QWidget,发现qss设置不起作用,需要重载其paintEvent函数即可;

     

    void TitleBar::paintEvent(QPaintEvent *event)
    {
        Q_UNUSED(event)
    
        QStyleOption opt;
        opt.init(this);
        QPainter p(this);
        style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    }

     

     

     

    展开全文
  • QWidget界面进行QSS读取时候,发现QSSQWidget无效???但是我在QWidget里再创建个QWidget时候(简称Q2),把刚才的QSS给Q2,Q2却生效了。这把我的好奇心彻底勾引起来了。 首先确定了范围QWidget、StyleSheet。耐...

    对QWidget界面进行QSS读取时候,发现QSS对QWidget无效???但是我在QWidget里再创建个QWidget时候(简称Q2),把刚才的QSS给Q2,Q2却生效了。这把我的好奇心彻底勾引起来了。
    首先确定了范围QWidget、StyleSheet。耐着性子花了很长时间把Qt文档都看了下来。在Qt Style Sheets Reference 这个里面,总算讲到了。
    在这里插入图片描述
    如果你的类继承了QWidget,那么要想花里胡哨的QSS生效,需要重写绘画事件,且这个类必须加上Q_OBJECT这个宏。
    在这里插入图片描述
    更绝的是我把上面这串代码贴到百度,发现一堆人早就发了。以后还是先百度好了。
    在这里插入图片描述

    展开全文
  • 自定义QWidget后,发现对于QWidget设置样式失效。想让自定义控件,能够采用QSS中QWidget生效。采用如下方法可以解决: 调用setAttribute(Qt::WA_StyledBackground,true); QStyleOption opt; opt.init(this); ...

    目的

    自定义QWidget后,发现对于QWidget设置样式失效。想让自定义控件,能够采用QSS中QWidget生效。采用如下方法可以解决:

    1. 调用setAttribute(Qt::WA_StyledBackground,true);
    2. 重写paintEvent
    void myWidget::paintEvent(QPaintEvent *)
    {
         QStyleOption opt;
       	opt.init(this);
       	QPainter p(this);
       	style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    }
    
    1. 改成继承 QFrame,因为 QFrame 自带 paintEvent 函数已做了实现,在使用样式表时会进行解析和绘制。
    2. 屏蔽对应属性设置, 导致样式无法生效
      这种情况极少数, 但也是可能出现问题。
      i.e. 1 我之前发生过设置QTreeWidgetItem选中或者其他样式, 当时在QSS文件中通过设置
    QTreeWidget::item:selected
    {
    .......
    }
    

    但是对应效果却没出现, 刚开始我还怀疑是不是自己弄错了, 但最后发现 样式没问题, 结果问题在于 QTreeWidgetItem 它本身设置了setFlags(Qt::NoItemFlags); 此效果表示它没有任何属性设置, 因而对应你设置伪状态就没用。

    void QTreeWidgetItem::setFlags(Qt::ItemFlags flags)
    //Sets the flags for the item to the given flags. These determine whether the item can be selected or modified. This is often used to disable an item.
    

    i.e.2 比如说 MoveDialog 通过paintEvent 实现边框边界为1px的白色, 但是我在某个子类继承该类后, 设置样式

    border : 1px solid black;
    

    发现子类设置qss样式没生效. 有两种方案解决 1: 重写子类的paintevent 不调用父类的paintevent 2:取消父类的paintevent, 通过设置qss样式设置, 这样子类设置qss也会生效。

    展开全文
  • void MainTitleBarWgt::paintEvent(QPaintEvent* event) { QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &...QWidget::paintEvent(event); }

    void MainTitleBarWgt::paintEvent(QPaintEvent* event)
    {
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    QWidget::paintEvent(event);
    }

    展开全文
  • Qt 设置 QWidget 背景色

    2021-02-01 15:36:00
    Qt 设置 QWidget 背景色 简述 QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。 Qt中窗口背景的设置,下面介绍三种方法。 使用QPalette 使用Style Sheet 绘图事件 ...
  • painter.setRenderHint(QPainter.Antialiasing) ... note: 经过一段时间的使用,我发现当widget做为子控件时,通过qss样式去设置圆角是可以的,但是当widgets作为最底层的界面时,则要通过上面的像素绘画才能修改。
  • 解决QWidget设置QSS无效

    2020-07-05 18:16:10
    QWidget设置QSS无效,这个不知是不是Qt的bug,还是有啥高深意义,反正应用中就想自定义一个窗体 1、解决方案一(墙裂推荐) 不要继承或使用QWidget,改用其他的QFrame,QDialog等,亲测QFrame有效 2、解决方案二 重载...
  • Qt 之设置 QWidget 背景色

    万次阅读 多人点赞 2015-12-19 11:32:28
    简述QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。...因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。使用QPalette使用
  • Qt使用qss时对QWidget无效

    千次阅读 2018-04-07 21:52:40
    当自定义界面类继承QWidget后,qss样式表对其无效的情况下,需要重写paintEvent函数。 void MyWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QStyleOption styleOpt; styleOpt.init(this); ...
  • 自定义控件时基类用了QWidget,发现qss设置不起作用,需要重载其paintEvent函数即可; QMyToolButton::QMyToolButton(QWidget *parent) : QWidget(parent) {  QString strBtnSheet="QMyToolButton::...
  • 自定义QWidget后,在Design 里提升到窗口后,qss 式样不生效问题 https://doc.qt.io/qt-5/stylesheet-reference.html 自定义的QWidget ,需要添加以上代码…
  • 设置QWidget及其子类控件背景颜色

    千次阅读 2019-09-26 11:18:12
    QWidget是所有用户界面控件的...使用Style Sheet要用QSS设置窗口背景,需要小心使用。因为窗口使用QSS设置背景之后, 若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。 使用QPalette来设置背景色 QWi...
  • Qt之设置QWidget背景色

    2017-10-10 08:52:40
    Qt中窗口背景的设置,下面介绍三种方法。 1.使用QPalette 2.使用Style Sheet 3.绘图事件一般我不用QSS设置窗口背景,也不建议使用。...使用QPalette使用QPalette来设置背景色m_pWidget = new QWidget(th
  • QWidget是所有用户界面对象的基类,这意味...因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。 使用QPalette 使用QPalette来设置背景色 m_pWidget = new QWidget(this); m_p
  • PyQt5 设置QWidget窗口背景图片问题

    万次阅读 2018-12-21 16:29:39
    QWidget 创建的窗口有时并不能直接用 setStyleSheet 设置窗口部分样式 比如背景图,在Qt Designer 设置好背景图样式了 QWidget#Form{ … } 并能看到效果 但转为 python3 代码后,运行程序显示不了这个背景图 如果...
  • QSS设置

    2019-01-28 14:34:03
    样式表 ... 匹配所有QWidget 类型选择器 QPushButton 匹配QPushButton及其子类的所有实例 类选择器 .QPushButton ...
  • QT设置QWidget背景色踩坑记

    千次阅读 2020-04-01 16:33:49
    因为项目需要兼容Windows XP系统,一番选型后,采用了QT的QWidget+QSS方式实现UI。自然,设置某个QWidget组件的背景色是一个极为常见的需求。但就在这个及其简单的需求里,作者也踩到坑,费了半天时间,故有此文记录...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,580
精华内容 1,032
关键字:

qss设置qwidget