在XLib / Qt中将窗口设为桌面

Tom*_*ese 5 c++ qt xlib

我试图编写一个简单的程序作为Qt的桌面背景,除了使它成为Desktop Widget之外,我还使其全部正常工作。我不知道如何执行此操作,我不介意使用XLib或Qt进行此操作,但是如果有人提出建议,我将非常高兴。

Job*_*Job 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);
        }
};
Run Code Online (Sandbox Code Playgroud)

此解决方案的问题在于,它完全覆盖了桌面环境在后台绘制的所有内容(包括图标、等离子体等)。

如果您只想以编程方式设置新的背景图像,我会检查您的 DE 是否有相应的 API。