5

Qtでデスクトップの背景として機能する簡単なプログラムを作成しようとしています.デスクトップウィジェットにする以外はすべて正常に動作します。これを行う方法についてはわかりません。これを行うために XLib や Qt を使用してもかまいませんが、誰か提案があれば、私はとても幸せです。

4

1 に答える 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);
        }
};

このソリューションの問題点は、デスクトップ環境がバックグラウンドで描画するすべてのもの (アイコン、プラズモイドなど) を完全に塗りつぶしてしまうことです。

プログラムで新しい背景画像を設定するだけの場合は、DE にそのための API があるかどうかを確認します。

于 2010-06-09T15:01:07.040 に答える