我在现有产品中有一个QTableView。我将其更改为对无法编辑的行使用灰色背景。但是,当桌子失去焦点时,QT会将背景颜色更改为灰色。我在互联网上找到了很多尝试的方法,但是没有运气。

我最接近的是通过在createEditor中创建的编辑器上设置调色板。设置QTableView本身的调色板时我没有运气。当桌子失去焦点时,我看到我使用过的测试颜色(黄色)短暂闪烁,然后变成灰色。

我一直在玩QT Creator提供的Frozencolumn示例,但是运气不好,因为没有编辑器。

  QPalette p = frozenTableView->palette();
  p.setColor(QPalette::Active, QPalette::Highlight, Qt::darkGreen);
  p.setColor(QPalette::Disabled, QPalette::Highlight, Qt::green);
  p.setColor(QPalette::Inactive, QPalette::Highlight, Qt::yellow);
  p.setColor(QPalette::Inactive, QPalette::HighlightedText, Qt::darkYellow);
  frozenTableView->setPalette(p);


要么

frozenTableView->setStyleSheet("QTableView { border: none;"
                                     "background-color: #8EDE21;"
                                     "selection-background-color: #999}"
      "QTableView:!active {"
                                     "selection-background-color: yellow;"
                                         "selection-color: yellow"
                                     );


我还能尝试什么吗?就像QT在失去焦点并撤消我设法实现的目标时正在调用setPalette()一样。

最佳答案

使用FrozenTableWidget进行测试可能会有些混乱,因为它是2个QTableWidgets的组合。

   // QPalette p = frozenTableView->palette();
   QPalette p = palette();
   p.setColor(QPalette::Inactive, QPalette::Highlight, p.color(QPalette::Active, QPalette::Base));
   setPalette(p);


如果您正在寻找焦点,这会在失去焦点时删除突出显示的颜色?

关于c++ - 在QTableView上失去焦点时失去背景色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57289010/

10-13 06:29