zoukankan      html  css  js  c++  java
  • qt 记录调用setStyleSheet设置样式后不生效问题

    遇见两种调用setStyleSheet方法样式不生效问题:

    直接调用setStyleSheet样式部分生效,部分不生效

    问题代码:

    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        QFile file("://qss.qss");
        file.open(QIODevice::ReadOnly);
        setStyleSheet(file.readAll());
        file.close();    
    }
    ://qss.qss  是qss 样式文件
    运行后大部分样式不生效,只有主窗体生效, 后经排查,是因为对主窗体 UI右键-> 改变样式表... 这样设置过一个字体样式-_-!

     估计因为这样显示设置样式,覆盖了MainWindows构造中调用setStyleSheet函数设置的样式了,有两种解决办法:

    1. 统一使用qss文件管理样式,去掉通过ui界面改变样式表方式修改样式

    2. 把设置样式操作,放在ui->setupUi(this)之前,像这样:

    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        QFile file("://qss.qss");
        file.open(QIODevice::ReadOnly);
        setStyleSheet(file.readAll());
        file.close();    
        ui->setupUi(this);
    }

    推荐使用第一种方式,统一使用qss文件管理样式,如果没有在ui中显示设置样式(ui中的编辑样式表窗口编辑样式),在把setStyleSheet放在ui->setupUi之前时,样式也会不生效。

    控件调用setStyleSheet或设置class属性,改变样式不生效

    ui->btnModelAssess->setProperty("class", "btnNormal");
    //或者
    ui->btnModelAssess->setStyleSheet("border: 1px solid #333");

    如果这样不生效,可以尝试在设置样式前后分别调用style()->unpolish和style()->polish 刷新

     style()->unpolish(ui->btnModelAssess);
    ui->btnModelAssess->setProperty("class", "btnNormal");
    //或者
    ui->btnModelAssess->setStyleSheet("border: 1px solid #333");
    style()->polish(ui->btnModelAssess);
  • 相关阅读:
    LeetCode 230. Kth Smallest Element in a BST
    LeetCode 114. Flatten Binary Tree to Linked List
    LeetCode 222. Count Complete Tree Nodes
    LeetCode 129. Sum Root to Leaf Numbers
    LeetCode 113. Path Sum II
    LeetCode 257. Binary Tree Paths
    Java Convert String & Int
    Java Annotations
    LeetCode 236. Lowest Common Ancestor of a Binary Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/GengMingYan/p/15084020.html
Copyright © 2011-2022 走看看