我想知道如何绘制连接QTreeView
中项目的线条,如树模型下的图片所示。我的程序将在不同的平台上运行,因此使用不同的样式。我可以保证根据需要绘制项目吗?
我觉得,使用样式表可能会有问题,因为某些样式不会打印这样的行并使用delagate可能会导致我出现双重绘图问题。
答案 0 :(得分:3)
文档here中有一个示例,使用样式表准确显示您要实现的目标。
请注意,当您使用样式表 QStyleSheetStyle 时,无论您的应用程序目前正在使用 QStyle ,都可以使用。因此,如果您决定采用这种方式,您将以同样的方式覆盖控件的外观和感觉,无论目标平台如何。
如果这是一个问题,您可以考虑仅对某些平台使用样式表。举个例子:
#ifdef Q_OS_MAC
myControl->setStyleSheet(":/my_stylesheet_for_mac.qss");
#endif
回到文档中的示例,它使用一些包含所有各种线(垂直,水平,分支等)和::branch
子控件及其状态的图像来确定要使用的图像。
结果是这样的:
显然,您必须更改代码以显示vline图片而不是箭头。
作为一个副节点,如果您使用的是原生样式,我可能会建议您考虑为什么要这样做。如果您的应用程序具有原生外观,则不应以任何方式更改它。也就是说,如果目标平台没有渲染线来连接树视图项,那么您不应该添加它们。
但是,如果您的应用程序不需要在所有目标平台上查看本机,您可以考虑使用相同的样式(例如 Fusion )并提供相同的用户体验,无论平台是什么