【发布时间】:2019-04-25 11:13:04
【问题描述】:
如何使用融合样式禁用焦点边框和背景 QTreeWidget?焦点很烦人。特别是当我使用交替的原始颜色时。
#include <QApplication>
#include <QWidget>
#include <QTreeWidget>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.setStyle("fusion");
QWidget *mainWidget = new QWidget();
mainWidget->resize(200,150);
QTreeWidget *myTree = new QTreeWidget(mainWidget);
myTree->resize(200,150);
QTreeWidgetItem *item;
item = new QTreeWidgetItem(myTree);
item->setText(0,"item1");
//...
item = new QTreeWidgetItem(myTree);
item->setText(0,"item6");
myTree->setAlternatingRowColors(true);
myTree->setStyleSheet("QTreeView {background-color: #222222;"
" alternate-background-color: #333333;"
" selection-background-color: #FF77FF;}");
myTree->setFocus();
item->setSelected(true);
mainWidget->show();
return a.exec();
}
【问题讨论】:
-
您指的是第一项的“暗”焦点矩形吗?如果是这种情况,您可以使用项目委托,实现 paint() 方法并针对 QStyle.State_Selected 和 QStyle.State_HasFocus 检查 QStyleOptionViewItem.state:如果它具有焦点且未选中,只需取消设置 State_HasFocus 并继续使用带有新选项的标准 paint() 实现。
标签: windows qt focus qtableview qtreeview