操作系统:uBuntu20.04.3
Qt版本:Qt6.22
使用Qt在触摸屏下编程,通常需要让程序运行于全屏模式,并隐藏鼠标指针。从Qt5.5开始,QWSServer类已经不再支持,无法在用该类的QWSServer::setCursorVisible(false);方法对指针进行隐藏。
本文记录了两种用不同方式实现UI来实现全屏显示和隐藏鼠标指针的方法
一、widget实现UI
文件:main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/* 隐藏鼠标指针 */
QApplication::setOverrideCursor(QCursor(Qt::BlankCursor));
MainWindow w;
/* 全屏显示 */
w.showFullScreen();
return a.exec();
}
二、QML实现UI
文件:main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QCursor>
int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
QGuiApplication app(argc, argv);
/* 隐藏鼠标指针 */
app.setOverrideCursor(QCursor(Qt::BlankCursor));
/* 也可以使用静态调用 */
/* QGuiApplication::setOverrideCursor(QCursor(Qt::BlankCursor)); */
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
文件main.qml
/* 若是Qt5,请增加导入库的版本 */
import QtQuick.Window
import QtQuick.Controls
ApplicationWindow {
visible: true
/* 全屏显示 */
visibility: Window.FullScreen
title: qsTr("Hello World")
}