Как я могу изменить форму курсора на QWS? - PullRequest
2 голосов
/ 28 декабря 2011

В X11 Qt поддерживает библиотеку Xcursor, которая позволяет создавать полноцветные темы значков. Я могу изменить курсор:

QPixmap cursor(":/res/cursor.png");
mCursor = QCursor(cursor,-1,-1);
setCursor(mCursor);

Но на QWS эффект очень плохой. Я хочу изменить форму курсора на QWS. Я не могу установить libxcursor / xcursor-dev или аналогичный в системах arm 9 для использования полноцветных курсоров Поэтому я пытаюсь изменить Qt-embedded-opensoure.

/* src/corelib/global/qnamespace.h */
    enum CursorShape {
        ArrowCursor,
        UpArrowCursor,
        CrossCursor,
        WaitCursor,
        IBeamCursor,
        SizeVerCursor,
        SizeHorCursor,
        SizeBDiagCursor,
        SizeFDiagCursor,
        SizeAllCursor,
        BlankCursor,
        SplitVCursor,
        SplitHCursor,
        PointingHandCursor,
        ForbiddenCursor,
        WhatsThisCursor,
        BusyCursor,
        OpenHandCursor,
        ClosedHandCursor,
        LastCursor = ClosedHandCursor,
        BitmapCursor = 24,
        CustomCursor = 25 
};

Я хочу заменить ArrowCursor на MyCursor. Как я могу заменить его? Это .png? или .jpg? Я не могу найти никаких ресурсов об этом. Спасибо за любые ответы.

1 Ответ

2 голосов
/ 29 декабря 2011

Вы можете жестко запрограммировать его. Вот полная программа для демонстрации:

#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <QtGui/QCursor>

static const char *const cursor_xpm[] = {
    "15 15 3 1",
    "   c None",
    ".  c #000000",
    "*  c #aa0000",
    "     .....     ",
    "   ..*****..   ",
    "  .   ***   .  ",
    " .    ***    . ",
    " .    ***    . ",
    ".     ***     .",
    ".    *****    .",
    ".*************.",
    ".    *****    .",
    ".     ***     .",
    " .    ***    . ",
    " .    ***    . ",
    "  .   ***   .  ",
    "   ..*****..   ",
    "     .....     "
};

int main(int argc, char* argv[]){

  QApplication app(argc, argv);
  QCursor myCursor(cursor_xpm);
  QWidget widget;
  widget.setCursor(myCursor);
  widget.show();
  return app.exec();
}

Преобразование png в xpm для получения значений не должно быть слишком сложным.

...