c++ QStyle与Qt样式表

pdtvr36n  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(192)

我正在尝试用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);
63lcw9qa

63lcw9qa1#

QStyleSheet类似于CSS(但在这里我们称之为QSS)。使用QStyle和覆盖事件,你有更多的灵活性。如果你想有这么多的灵活性,你可以使用QStyle +覆盖事件和更多的助手类,如QPainter等。但如果你想有一些神奇的变化与几行,我建议你使用QSS。

c90pui9n

c90pui9n2#

我不知道你的问题是什么。但是你是对的,覆盖QStyle非常复杂,而且没有很好的文档。如果你想制作自己的QStyle,那么绘制按钮可能是你会遇到的最简单的事情。绘制更复杂的小部件,比如组合框、可滚动的东西、标签、如果你想看一个很好地覆盖QStyle的例子,可以看一下https://github.com/randrew/phantomstyle
使用样式表要简单得多,但它也有一些缺点,渲染比不使用样式表要慢得多。
因此,我不能提供任何具体的意见,决定将取决于你和你的要求。

相关问题