Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QTableView上失去焦点时失去背景色_C++_Qt_Qtableview - Fatal编程技术网

C++ 在QTableView上失去焦点时失去背景色

C++ 在QTableView上失去焦点时失去背景色,c++,qt,qtableview,C++,Qt,Qtableview,我在现有产品中有一个QTableView。我已将其更改为对无法编辑的行使用灰色背景。但是,当桌子失去焦点时,QT会将背景颜色更改为灰色。我在网上找到了很多可以尝试的东西,但是运气不好 我最接近的方法是在createEditor中创建的编辑器上设置调色板。我在设置QTableView本身的调色板时运气不好。当桌子失去焦点时,我看到我使用的测试颜色(黄色)在变成灰色之前短暂闪烁 我一直在使用QT Creator提供的frozencolumn示例,但由于没有编辑器,所以运气不太好 QPalette

我在现有产品中有一个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);


还有什么我可以试试的吗?就像QT在焦点丢失时调用setPalette(),并撤消我试图实现的任何操作。

使用frozenTableWidget进行测试可能有点混乱,因为它是两个QtableWidget的组合

   // QPalette p = frozenTableView->palette();
   QPalette p = palette();
   p.setColor(QPalette::Inactive, QPalette::Highlight, p.color(QPalette::Active, QPalette::Base));
   setPalette(p);
当焦点丢失时,这会移除突出显示的颜色,如果这是您想要的

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