【问题标题】:How to hide mouse pointer on startup?如何在启动时隐藏鼠标指针?
【发布时间】:2013-11-26 13:56:27
【问题描述】:

我有一个运行 linux 的嵌入式触摸屏,我的应用是 Qt/C++。

我使用如下所示的函数 main 启动应用程序:

#include <QApplication>
#include <QThread>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    // Create the app
    QApplication app(argc, argv);

    // Hide the pointer
    app.setOverrideCursor( QCursor( Qt::BlankCursor ) );

    // Create main window
    MainWindow *window = new MainWindow;

    // Set up the UI and execute the App
    window->show();
    app.exec();

    // tidy up
    delete(window);
    return 0;
}

我遇到的问题是,当我运行程序时,光标会显示出来。但只要我触摸屏幕(该应用是全屏应用),光标就会消失。

我已经读到这可能是一个简单的焦点问题 - 即我的应用程序没有焦点或类似问题。如何确保我的应用在启动时成为焦点?

或者

隐藏鼠标指针是不是我做错了什么?

---编辑---

如果我删除app.setOverrideCursor( QCursor( Qt::BlankCursor ) ); 行,那么我将专注于我的应用程序。所以这条线不知何故让我的应用失去了焦点。

因此,作为一个快速破解,我在 MainWindow 中放置了一个 QTimer 并将其设置为 100 毫秒(这样它只会在事件处理开始后得到处理 - 即在 app.execute() 之后)。然后我将计时器事件连接到一个槽函数,我称之为“getFocusOnMeNow()”,其中有:

this->activateWindow();
this->setFocus();

这行得通。

所以现在我想整理一下。我可以在 MainWindow 中调用 app.execute() 之后的哪些函数/插槽来获得焦点?我没有看到可以重载的 MainWindow::start() 插槽...?

【问题讨论】:

  • 如果您认为是这种情况,是否将光标隐藏在窗口的 showEvent 中?
  • @peppe 我认为这不是问题所在。 “setOverrideCursor”将光标设置为对我的应用程序不可见。如果这是一个焦点问题,在窗口显示事件中做同样的事情不会改变任何事情,因为我仍然需要专注于我的应用程序:(除非你完全在谈论不同的方法?
  • 然后强制窗口尽快获得焦点(activateWindow()等)
  • @peppe 是的,但这是我的问题,我如何在启动时关注我的窗口...我尝试了 activateWindow() 和 setFocus,但也没有。即使在我的 Windows 模拟器程序上,该应用程序在运行后也没有成为焦点......

标签: c++ qt embedded touchscreen


【解决方案1】:

试试

app.setCursorVisible(false);

这对你有帮助吗?

【讨论】:

  • 谢谢您,我正在运行 Qt 4.6,但该应用似乎没有该功能:(
  • 所有应用程序类都没有setCursorVisible 方法。这曾经可以通过 QWSServer 获得嵌入式 Linux。从 Qt 5.0 开始 QWS is no longer a supported platform.
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2021-10-19
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多