【问题标题】:How to set the background QBrush of a QMdiArea widget to a gradient of system colors?如何将 QMdiArea 小部件的背景 QBrush 设置为系统颜色渐变?
【发布时间】:2011-09-16 16:44:36
【问题描述】:

我正在尝试将 Qt4 中 QMdiArea 小部件的背景 QBrush 设置为系统颜色的渐变。

这是我现在拥有的一些代码:

QPrios::QPrios(int &argc, char **argv): QApplication(argc, argv)
{
        // ... 
        QPalette pal = this->palette();
        QLinearGradient grad;
        grad.setColorAt(0, pal.text().color());
        grad.setColorAt(1, pal.window().color());
        _mdi->setBackground(QBrush(grad));
        // ...
}

发生的情况是背景变成了纯色,即带有grad.setColorAt(1, pal.window().color());的那一组

我做错了什么?

【问题讨论】:

    标签: c++ windows qt qt4 lineargradientbrush


    【解决方案1】:

    设置渐变的坐标模式。如果你想要一个垂直渐变,你可能还想在构造函数中设置渐变的起点和终点。

    QLinearGradient grad(QPointF(0, 0), QPointF(0, 1));
    grad.setCoordinateMode(QGradient::ObjectBoundingMode);
    grad.setColorAt(0, pal.text().color());
    grad.setColorAt(1, pal.window().color());
    

    【讨论】:

    • 是的,就是这样!非常感谢,我是 Qt 的新手,并且仍然掌握它的窍门。
    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    相关资源
    最近更新 更多