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