Qt應用程式Cursor樣式 在X11上,Qt支援Xcursor庫,可以隨意更改全彩色的Cursor主題。但是在嵌入式Qt開發中,沒有Xcursor的支援,效果就沒這麼樂觀。
總結一下,我們可以通過以下三類方式修改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時的樣式為:
對於常用嵌入式開發組合Qt-embedded+linux+arm來說,正如Qt::CursorShape原樣。
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);} 從cursor_xpm[]形狀可以清晰的看到樣式效果,
其實xpm的方式和pixmap原理相同,Linux下我們可以輕鬆通過命令轉換圖片格式,如png轉xpm:
convert 1.png xpm:2.xpm
Windows下也有不少轉換軟體和工具,可以完成一鍵轉換。
也許你會有這樣一個疑問,為何不直接用QPixmap貼原圖片,何必轉成xpm?我想說,多知道一些途徑不是壞事,對你不實用可以不用,當然,xpm絕對有它的用武之地,和它不可磨滅的意義……