Qt 移动端开发 #
移动端开发概述 #
text
┌─────────────────────────────────────────────────────────────┐
│ Qt 移动端开发 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 支持的平台: │
│ ├── iOS (iPhone/iPad) │
│ └── Android │
│ │
│ 开发方式: │
│ ├── Qt Widgets - 传统控件 │
│ └── Qt Quick/QML - 现代移动 UI │
│ │
│ 关键考虑: │
│ ├── 触摸交互 │
│ ├── 屏幕适配 │
│ ├── 性能优化 │
│ └── 平台集成 │
│ │
└─────────────────────────────────────────────────────────────┘
Android 开发 #
环境配置 #
qmake
# .pro 文件配置
android {
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
# AndroidManifest.xml 位置
ANDROID_MANIFEST = $$PWD/android/AndroidManifest.xml
# 指定 Android SDK 和 NDK 路径
ANDROID_SDK_ROOT = /path/to/android-sdk
ANDROID_NDK_ROOT = /path/to/android-ndk
# 目标 Android 版本
ANDROID_TARGET_SDK_VERSION = 33
ANDROID_MIN_SDK_VERSION = 21
}
AndroidManifest.xml #
xml
<?xml version="1.0"?>
<manifest package="com.company.myqtapp"
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="33"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application android:label="MyQtApp"
android:icon="@drawable/icon">
<activity android:name="org.qtproject.qt.android.bindings.QtActivity"
android:label="MyQtApp"
android:screenOrientation="unspecified">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
iOS 开发 #
项目配置 #
qmake
# .pro 文件配置
ios {
# Info.plist
QMAKE_INFO_PLIST = iOS.plist
# 支持的设备
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1,2 # iPhone + iPad
# 图标
ICON = AppIcon.icns
# 启动画面
LAUNCH_SCREEN = LaunchScreen.storyboard
}
Info.plist #
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>MyQtApp</string>
<key>CFBundleIdentifier</key>
<string>com.company.myqtapp</string>
<key>CFBundleVersion</key>
<string>1.0.0</string>
<key>MinimumOSVersion</key>
<string>14.0</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
触摸交互 #
cpp
// 触摸事件处理
class TouchWidget : public QWidget
{
Q_OBJECT
protected:
bool event(QEvent *event) override
{
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QTouchEvent *touchEvent = static_cast<QTouchEvent*>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->points();
for (const auto &point : touchPoints) {
qDebug() << "Touch at:" << point.position();
}
break;
}
default:
return QWidget::event(event);
}
return true;
}
};
屏幕适配 #
cpp
// 获取屏幕信息
QScreen *screen = QGuiApplication::primaryScreen();
QRect screenGeometry = screen->geometry();
qreal dpi = screen->physicalDotsPerInch();
qreal devicePixelRatio = screen->devicePixelRatio();
// 适配不同屏幕
void adaptToScreen()
{
QScreen *screen = QGuiApplication::primaryScreen();
QRect geometry = screen->geometry();
if (geometry.width() < 600) {
// 手机布局
setMobileLayout();
} else {
// 平板布局
setTabletLayout();
}
}
下一步 #
现在你已经掌握了移动端开发,接下来学习 嵌入式开发,了解 Qt 在嵌入式设备上的应用!
最后更新:2026-03-29