在 XLib/Qt 中将窗口变成桌面

5

我正在尝试编写一个简单的程序来作为我的Qt桌面背景,除了将其设置为桌面小部件之外,其他都已经正常运行。我不知道如何做到这一点,我可以使用XLib或Qt来完成,但如果有人有建议,我会非常高兴。

1个回答

3

我已经创建了一个简单的例子,可以将桌面背景填充为白色。很容易让它绘制一张图片。

class DesktopWidget : public QWidget
{
        Q_OBJECT

    public:

        DesktopWidget()
        {
            setAttribute(Qt::WA_X11NetWmWindowTypeDesktop);
            resize(QApplication::desktop()->size());
        }

    protected:

        void paintEvent(QPaintEvent*)
        {
            QPainter painter(this);
            painter.fillRect(geometry(), Qt::white);
        }
};

这个解决方案的问题在于它完全覆盖了桌面环境绘制的所有背景内容(包括图标、plasmoids等)。
如果您只想以编程方式设置新的背景图片,建议检查您的桌面环境是否有相关API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接