【问题标题】:Qt Set Background Color of QLineEditQt设置QLineEdit的背景颜色
【发布时间】:2015-02-01 16:58:46
【问题描述】:

我正在尝试更改QLineEdit 的背景颜色,但我根本无法弄清楚。

我尝试使用 stylesheets 原来是这样的

QLineEdit *le = new QLineEdit();
le->setStyleSheet("background:#000;");

但这并没有做任何事情。我试过像这样使用QPalette

QPalette palette;
palette.setColor(QPalette::Base, Qt::black);
palette.setColor(QPalette::Background, Qt::black);
le.setPalette(palette);    

但这也没有做任何事情。我一直在寻找一整天,找不到任何东西。我做错了什么还是有其他方法可以做到这一点?

【问题讨论】:

    标签: c++ qt background qlineedit palette


    【解决方案1】:

    您可以通过设置调色板来设置行编辑的背景和文本颜色:

    QLineEdit *le = new QLineEdit();
    
    QPalette palette;
    palette.setColor(QPalette::Base,Qt::black);
    palette.setColor(QPalette::Text,Qt::white);
    le->setPalette(palette);
    

    【讨论】:

      【解决方案2】:

      对我来说很好用:

      QLineEdit *le = new QLineEdit();
      le->setStyleSheet("QLineEdit { background: rgb(0, 255, 255); selection-background-color: rgb(233, 99, 0); }");
      

      【讨论】:

      • 啊,我发现它只是因为窗口具有Qt::WA_TranslucentBackground 属性。这让我整天发疯。不过谢谢
      • @DavidLudwig 很高兴你知道了。将答案标记为已接受将很有帮助,因为它是一个有效的答案......
      【解决方案3】:

      您的代码几乎是正确的。只有 QLine 编辑使用基本颜色。因此,如果您不想替换现有的可以包含边框填充和边距的样式表并且只想更改背景,请使用 QPalette:

      QPalette palette = _ui->lnSearch->palette();
      palette.setColor(QPalette::Base, Qt::green);
      _ui->lnSearch->setPalette(palette);
      

      感谢:https://forum.qt.io/topic/64568/why-setting-background-color-of-qlineedit-has-no-effect

      【讨论】:

        【解决方案4】:

        我不得不像这样使用标准 css 中的背景颜色:

        QLineEdit* edit = new QLineEdit();
        edit->setStyleSheet("QLineEdit {background-color: black;}");
        

        我使用的是 Qt 5.4

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-24
          • 2023-03-25
          • 1970-01-01
          • 1970-01-01
          • 2010-09-17
          相关资源
          最近更新 更多