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