我正在尝试用Qt框架做一个应用程序。我对这个框架的主要问题是设计。我做了很多研究,我发现有两种方法可以实现我的应用程序的风格。
- Qt样式表
- Qt样式类
我发现很多人都在谈论QtStyleSheet,但几乎没有人谈论QStyle。最好的解决方案是什么?你有QStyle的例子吗?
我正在尝试编写一个QStyle类,但是我发现它太复杂了。Qt文档不足以让我理解所有的主题。
下面是我的一段代码,用一个特殊的字体和一个边距来做一个透明的按钮。(代码在我的QProxyStyle类的drawControl函数中)
// draw background
QRect button_rect = button_option->rect;
// draw background
button_rect.adjust(12, 12, -12, -12);
painter->fillRect(button_rect, QColorConstants::Transparent);
painter->setPen(QColorConstants::Black);
// define the font
QFont font("Material Icons");
font.setPixelSize(24);
painter->setFont(font);
// draw text
painter->drawText(button_rect, Qt::AlignCenter, button_option->text);
2条答案
按热度按时间63lcw9qa1#
QStyleSheet类似于CSS(但在这里我们称之为QSS)。使用QStyle和覆盖事件,你有更多的灵活性。如果你想有这么多的灵活性,你可以使用QStyle +覆盖事件和更多的助手类,如QPainter等。但如果你想有一些神奇的变化与几行,我建议你使用QSS。
c90pui9n2#
我不知道你的问题是什么。但是你是对的,覆盖
QStyle
非常复杂,而且没有很好的文档。如果你想制作自己的QStyle
,那么绘制按钮可能是你会遇到的最简单的事情。绘制更复杂的小部件,比如组合框、可滚动的东西、标签、如果你想看一个很好地覆盖QStyle
的例子,可以看一下https://github.com/randrew/phantomstyle使用样式表要简单得多,但它也有一些缺点,渲染比不使用样式表要慢得多。
因此,我不能提供任何具体的意见,决定将取决于你和你的要求。