簡體   English   中英

Qt for Embedded Linux:在啟動時隱藏光標

[英]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 ; 但從問題來看,這似乎是Qt4QWS 代碼序列,

QWSServer *server = QWSServer::instance();
if(server) {
    server->setCursorVisible(false);
}

將使用QWSQt4.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM