c++ - 只为一种widget设置样式

标签 c++ qt

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

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

Plastique style
(来源:qt-project.org)

Plastique style
(来源:qt-project.org)

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

谢谢。

最佳答案

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

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

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

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

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

关于c++ - 只为一种widget设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068314/

相关文章:

c++ - 如何使用删除删除成语从结构 vector 中删除值?

c++ - 编译器可以优化从堆到栈的分配吗?

c++ - 在 C++ 中,如何初始化在 Singleton 模板中声明的私有(private)类的静态成员?

c++ - 使用 GCC 4.6.2 C++ Qt、MinGW、Vista 设置堆栈大小

qt - 在 QTreeView 中设置粗体行

c++ - 'testArray 未在此范围内声明'

qt - 如何从 QML 访问在 C++ 类中声明的 Q_ENUM?

linux - Qt 小部件大小错误 + 小部件更新问题

c++ - 即使 QTabletEvent 被接受,QWidget 的 mousePressEvent 也会被调用

c++ - 一个输入到多个输出文件 C++