[英]Qt for Embedded Linux: Hide cursor on startup
我正在linux嵌入式系統上開發一個Qt應用程序。 該系統有一個觸摸屏,但也有一個OTG USB端口,它必須與鼠標一起使用。
所以我的問題是,當應用程序啟動時,它會在屏幕中間顯示一個鼠標光標,然后當我的主窗口繪制事件發生時它會消失。
當應用程序啟動時,如果插入鼠標,我可以隱藏/顯示光標,效果很好,但我在啟動時總是有光標。
我試過:QWSServer :: setCursorVisible(false);
或:qApp-> setOverrideCursor(QCursor(Qt :: BlankCursor));
結果與上述相同。
我發現在啟動過程中隱藏光標的唯一方法是在沒有Cursor的情況下編譯Qt,但是當插入鼠標時我就不能有光標(這是邏輯...)。
所以,如果你有一個想法,我會很高興看到它:-)
謝謝,西爾萬
編輯:Okey所以這是在啟動時顯示光標的QWS服務器,我發現在qt / src / gui / embedded / qwscursor_qws.cpp中:
void QWSServerPrivate::initializeCursor()
{
Q_Q(QWSServer);
// setup system cursors
#ifndef QT_NO_QWS_CURSOR
// qt_screen->initCursor(sharedram + ramlen,true);
// default cursor
cursor = 0;
setCursor(QWSCursor::systemCursor(Qt::ArrowCursor));
#endif
q->sendMouseEvent(QPoint(swidth/2, sheight/2), 0);
}
現在,如果我評論“setCursor”指令,那就解決了問題,但編輯Qt源代碼要做到這一點很難看,所以如果你有更好的解決方案......
這不適用於Qt5 ; 但從問題來看,這似乎是Qt4與QWS 。 代碼序列,
QWSServer *server = QWSServer::instance();
if(server) {
server->setCursorVisible(false);
}
將使用QWS與Qt4.x一起使用。 需要注意的一點是,只有服務器才能這樣做。 即,使用-qws
調用該程序。 如果您運行多個應用程序,客戶端將無法禁用光標。
這應該在構建QApplication 之后但在第一個show()或showFullScreen()之前完成 。 您可能會在構建QApplication之前嘗試執行此操作。
編輯:正如您在應用程序最初顯示時的意思,
將#define QT_NO_QWS_CURSOR 1
添加到MyQconfig文件,並使用-qconfig MyQconfig
選項將其傳遞給./configure
。 或者您可以使用圖形工具qconfig
來自定義Qt。 qconfig
位於tools目錄中。 可以在src / corelib / global / qfeatures.txt中找到項目列表。 有關詳細信息,請參閱微調Qt 。
#include <QScreenCursor>
QScreenCursor *cursor = new QScreenCursor;
cursor->initSoftwareCursor();
cursor->hide();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.