您可以使用样式表为QTreeWidget中的复选框设计自定义样式。
以下是一个示例,演示如何将复选框设置为圆形,并在选中时使用蓝色填充:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建QTreeWidget
QTreeWidget treeWidget;
treeWidget.setHeaderLabels({"Name", "Size"});
treeWidget.setColumnWidth(0, 200);
treeWidget.setSortingEnabled(true);
// 添加根节点和子节点
QTreeWidgetItem *root = new QTreeWidgetItem(&treeWidget);
root->setText(0, "Root");
root->setText(1, "");
root->setFlags(root->flags() | Qt::ItemIsUserCheckable);
root->setCheckState(0, Qt::Unchecked);
QTreeWidgetItem *child1 = new QTreeWidgetItem(root);
child1->setText(0, "Child 1");
child1->setText(1, "10 KB");
child1->setFlags(child1->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
child1->setCheckState(0, Qt::Unchecked);
QTreeWidgetItem *child2 = new QTreeWidgetItem(root);
child2->setText(0, "Child 2");
child2->setText(1, "20 KB");
child2->setFlags(child2->flags() | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
child2->setCheckState(0, Qt::Unchecked);
// 设置样式表
treeWidget.setStyleSheet("QTreeView::indicator:unchecked {"
"border-radius: 8px;"
"width: 16px;"
"height: 16px;"
"border: 2px solid black;}"
"QTreeView::indicator:checked {"
"border-radius: 8px;"
"width: 16px;"
"height: 16px;"
"background-color: blue;}"
);
// 显示窗口
treeWidget.show();
return app.exec();
}
在这个例子中,我们使用样式表设置复选框的样式。首先,我们为未选中状态的复选框设置了一个圆形边框,并指定了宽度和高度。然后,我们为选中状态的复选框设置了相同的圆形边框,并使用蓝色背景填充。
运行程序并选择或取消选择复选框,您应该能够看到自定义样式被应用于复选框。