總結一下,我們可以通過以下三類方式修改Qt應用程序的Cursor樣式:
1. Qt::CursorShape
Qt提供以下CursorShape,如下圖:- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- setCursor(QCursor(Qt::OpenHandCursor));
- }
效果圖:
對於桌面應用程序開發,系統主題可替代Qt::CursorShape的Cursor樣式,比如,當我使用Qt::WaitCursor,程序運行在UBuntu時的樣式爲:
2.QPixmap or QBitmap
代碼:- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- QCursor cursor ;
- QPixmap pixmap("cursor.png") ;
- cursor = QCursor(pixmap,-1,-1);
- setCursor(cursor) ;
- }
對於桌面應用程序開發,可實現全綵色的自定義Cursor,如圖:
對於常用嵌入式開發組合Qt-embedded+linux+arm來說,如果使用QWS來啓動應用程序,則好好的會變成了。只認識黑白2值,沒辦法……色盲……
3. x pixmap (xpm)
- static const char *const cursor_xpm[] = {
- "15 15 3 1",
- " c None",
- ". c #0000aa", //.的顏色
- "* c #aa0000", //*的顏色
- " ..... ",
- " ..*****.. ",
- " . *** . ",
- " . *** . ",
- " . *** . ",
- ". *** .",
- ". ***** .",
- ".*************.",
- ". ***** .",
- ". *** .",
- " . *** . ",
- " . *** . ",
- " . *** . ",
- " ..*****.. ",
- " ..... "
- };
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- QCursor myCursor(cursor_xpm);
- setCursor(myCursor);
- }
其實xpm的方式和pixmap原理相同,Linux下我們可以輕鬆通過命令轉換圖片格式,如png轉xpm:
convert 1.png xpm:2.xpm
Windows下也有不少轉換軟件和工具,可以完成一鍵轉換。