您能否建议/提供在GUI系统中实现运行时可更改主题的任何一般设计示例?这似乎是一个相当大的挑战。但是,许多GUI系统都存在这种功能,因此必须遵循一般的设计思想。
答案 0 :(得分:1)
需要做的是创建所有绘图操作的抽象,并对外观进行参数化。正如你所说,这是一个相当大的挑战,因为每个gui中有很多绘图操作都有语义,并且取决于你想要的特定于上下文的因素,因此应该进行参数化。这可以变成一个完整的列表(例如,您希望能够按照组合框绘制箭头的方式设置样式,或者如何绘制滚动条的条形)。如果您正在寻找示例QT支持通过CSS样式表设置UI样式,并通过创建新的绘图类以编程方式。
CSS可能也是一个基本的可设置属性需要的好例子。
但这是伪代码
中的非常简单的示例class Window
{
Style borderStyle;
ScreenRectangle rect;
paint(StyledPainter painter)
{
painter.drawBorder(borderStyle,rect);
...
}
}
class Style
{
float lineWidth;
RGB color;
}
class StylePainter
{
DrawContext context;
drawBorder(Style borderStyle, ScreenRectangle rect)
{
context.setLineWidth(style.linewidth);
context.setColor(style.color);
context.drawRect(rect);
}
}