Оформление окна рабочим столом в XLib / Qt - PullRequest
4 голосов
/ 07 июня 2010

Я пытаюсь написать простую программу, которая будет служить моим фоном рабочего стола в Qt, я заставил все это работать нормально, за исключением того, что он стал виджетом рабочего стола. Я понятия не имею, как это сделать, я не против использовать XLib или Qt для этого, но если у кого-то есть какие-то предложения, я был бы очень рад.

1 Ответ

2 голосов
/ 09 июня 2010

Я создал простой пример, который закрасит фон рабочего стола белым. Легко заставить его нарисовать изображение.

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);
        }
};

Проблема этого решения заключается в том, что оно полностью закрашивает все, что окружение вашего рабочего стола рисует в фоновом режиме (включая значки, плазмоиды, ...).

Если вы просто хотите программно установить новое фоновое изображение, я бы проверил, есть ли в вашем DE API для этого.

...