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