当焦点在 QTableView 上丢失时丢失背景颜色
Losing background colour when focus is lost on a QTableView
我在现有产品中有一个 QTableView。我已将其更改为对无法编辑的行使用灰色背景。但是,当 table 失去焦点时,QT 会将背景颜色更改为灰色。我在互联网上找到了很多东西可以尝试,但没有运气。
我最接近的方法是在 createEditor 中创建的编辑器上设置调色板。设置 QTableView 本身的调色板时我没有运气。当 table 失去焦点时,我看到我使用的测试颜色(黄色)在变灰之前短暂闪烁。
我一直在玩 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 个 QTableWidget 的组合。
// QPalette p = frozenTableView->palette();
QPalette p = palette();
p.setColor(QPalette::Inactive, QPalette::Highlight, p.color(QPalette::Active, QPalette::Base));
setPalette(p);
这会在失去焦点时移除突出显示的颜色,如果这是您想要的?
我在现有产品中有一个 QTableView。我已将其更改为对无法编辑的行使用灰色背景。但是,当 table 失去焦点时,QT 会将背景颜色更改为灰色。我在互联网上找到了很多东西可以尝试,但没有运气。
我最接近的方法是在 createEditor 中创建的编辑器上设置调色板。设置 QTableView 本身的调色板时我没有运气。当 table 失去焦点时,我看到我使用的测试颜色(黄色)在变灰之前短暂闪烁。
我一直在玩 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 个 QTableWidget 的组合。
// QPalette p = frozenTableView->palette();
QPalette p = palette();
p.setColor(QPalette::Inactive, QPalette::Highlight, p.color(QPalette::Active, QPalette::Base));
setPalette(p);
这会在失去焦点时移除突出显示的颜色,如果这是您想要的?