仅为一种小部件设置样式

时间:2013-04-17 19:16:02

标签: c++ qt

如何全局更改某种特定类型小部件的样式?我想让所有QGroupBox实例都使用“plastique”样式,因为它有很好的边框:

左边是GTK风格(我不喜欢);在右边,我想要的风格。

Plastique style http://qt-project.org/doc/qt-4.8/images/gtk-groupbox.png Plastique style http://qt-project.org/doc/qt-4.8/images/plastique-groupbox.png

我不想在程序中为每个QGroupBox实例设置样式,我想像在QApplication :: setStyle()中那样全局设置它,但仅限于QGroupBox。有办法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用qss个文件;它们是Qt元素的样式表。正如here

所解释的那样

qss中,您可以为QGroupBox类指定一种样式,类似于您在css中为HTML网站执行的样式。

答案 1 :(得分:0)

您必须在要重新设置的小部件上使用QWidget::setStyle功能。

如果您希望所有组框具有相同的样式,您可以创建一个子类并仅使用它(没有最简单的方法来重新设置相同窗口小部件类型的所有实例):

class MyGroupBox: public QGroupBox
{
    public:
        MyGroupBox(QWidget* parent) : QGroupBox(parent)
        {
            setStyle(/* the style you want */);
        }
};

另一个不太方便的选择是遍历窗口小部件树,并根据窗口小部件的类名设置样式。

您也可以使用Qt Style Sheets。请注意,目前自定义样式不支持这些。