如何删除Qtreewidget中的虚线分支
How to remove dotted branches in Qtreewidget
我希望删除qtreewidget(qt c )中的虚线分支。但是问题是我是否使用
setStyleSheet(QString("QTreeView::branch{background:palette(base)}"));
和 - 符号,用于扩展和崩溃,也消失了。
原始树小部件:
- ABCD
|
|--- EFGH
|--- IJKL
+ MNOP
所需的weedwidget:
- ABCD
EFGH
IJKL
+ MNOP
那么,我该如何处理?
可能的解决方案是使用qproxystyle:
#include <QtWidgets>
class BranchStyle: public QProxyStyle
{
public:
using QProxyStyle::QProxyStyle;
void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const override{
if(pe == PE_IndicatorBranch) {
static const int decoration_size = 9;
int mid_h = opt->rect.x() + opt->rect.width() / 2;
int mid_v = opt->rect.y() + opt->rect.height() / 2;
int bef_h = mid_h;
int bef_v = mid_v;
int aft_h = mid_h;
int aft_v = mid_v;
if (opt->state & State_Children) {
int delta = decoration_size / 2;
bef_h -= delta;
bef_v -= delta;
aft_h += delta;
aft_v += delta;
p->drawLine(bef_h + 2, bef_v + 4, bef_h + 6, bef_v + 4);
if (!(opt->state & State_Open))
p->drawLine(bef_h + 4, bef_v + 2, bef_h + 4, bef_v + 6);
QPen oldPen = p->pen();
p->setPen(opt->palette.dark().color());
p->drawRect(bef_h, bef_v, decoration_size - 1, decoration_size - 1);
p->setPen(oldPen);
}
return;
}
QProxyStyle::drawPrimitive(pe, opt, p, w);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTreeWidget w;
w.setStyle(new BranchStyle(w.style()));
QTreeWidgetItem *item1 = new QTreeWidgetItem({"ABCD"});
w.addTopLevelItem(item1);
QTreeWidgetItem *item11 = new QTreeWidgetItem({"EFGH"});
item1->addChild(item11);
QTreeWidgetItem *item12 = new QTreeWidgetItem({"IJKL"});
item1->addChild(item12);
QTreeWidgetItem *item2 = new QTreeWidgetItem({"MNOP"});
w.addTopLevelItem(item2);
QTreeWidgetItem *item21 = new QTreeWidgetItem({"RSTU"});
item2->addChild(item21);
QTreeWidgetItem *item22 = new QTreeWidgetItem({"VWXY"});
item2->addChild(item22);
w.expandAll();
w.show();
return a.exec();
}
相关文章:
- IPC使用多个管道和分支进程来运行Python程序
- 如何删除peer if else分支中的冗长句子
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 如何正确地将分支添加到已存在的树中
- 如何将分支添加到已存在的TTree:ROOT
- 如何删除 LLVM 中的不规则分支?
- 如果以下行不包含决策或分支,GDB 无法单步跳过函数
- 函数指针与条件分支
- 分支未在 Linux 上采用
- 如何删除分支因子不一致的树,最大为 30,40
- std::shared_ptr vs std::make_shared:意外的缓存未命中和分支预测
- 更改 git 分支名称后,在项目的 Visual Studio 代码中丢失智能感知(建议,转到定义C++
- 条件分支评估
- 是否可以使用函数指针数组来删除分支
- 基于派生类型的编译时行为分支
- L 系统树无法正确分支
- Antlr4 C++访问模棱两可的分支
- 如何为不同的分支使用不同的 Xcode 版本(或具有不同 Clang 版本的最新 Xcode)?
- 如何防止特定的QTreeView分支被拖动?
- 如何删除Qtreewidget中的虚线分支