国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

logo Qt使用教程

文檔金喜正規買球>>Qt使用教程>>如何在Visual Studio中創建嵌入式Qt quick應用程序(下)

如何在Visual Studio中創建嵌入式Qt quick應用程序(下)


Qt是一個跨平臺框架,通常用作圖形工具包,它不僅創建CLI應用程序中非常有用。而且它也可以在三種主要的臺式機操作系統以及移動操作系統(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設備,Android(Necessitas)和iOS的端口上運行。現在我們為你提供了免費的試用版。趕快點擊下載Qt最新試用版>>

點擊獲取更多文章教程

Qtitan組件集

  • QtitanRibbon| 下載試用: 遵循Microsoft Ribbon UI Paradigm for Qt技術的Ribbon UI組件,致力于為Windows、Linux和Mac OS X提供功能完整的Ribbon組件。
  • QtitanChart | 下載試用 : 是一個C ++庫,代表一組控件,這些控件使您可以快速地為應用程序提供漂亮而豐富的圖表。并且支持所有主要的桌面操作系統。
  • QtitanDataGrid| 下載試用 : 適用于Qt的商業化DataGrid 組件,使得表格數據可以直接面向終端用戶完全集成了QtDesigner,極易適應其他相似開發環境,保證100%兼容Qt GUI。

在本文的第1部分中,我們展示了如何在Visual Studio中針對Windows和嵌入式Linux創建多平臺Qt Quick應用程序項目。現在,我們將展示如何在嵌入式設備上運行該應用程序。然后,我們將繼續將該項目開發為我們打算創建的完整嵌入式應用程序。最后,我們將使用VS調試器對應用程序的C ++和QML代碼進行遠程調試。

在嵌入式設備上運行

我們已經展示了如何交叉編譯在Visual Studio中創建的“ hello world” Qt Quick應用程序。現在,我們將看到如何在Raspberry Pi上運行該應用程序。由于我們將以全屏模式運行,因此我們必須首先向應用程序窗口中添加一些內容。

Window {
    visible: true
    title: qsTr("Hello World")
    Text {
        id: clock
        font.pointSize: 72
        Timer {
            interval: 1000; running: true; repeat: true
            onTriggered: clock.text = (new Date).toLocaleTimeString(Qt.locale("de_DE"), "hh:mm:ss");
        }
    }
}

和以前一樣,選擇Linux項目配置,然后按F7鍵開始交叉編譯。

1>------ Build started: Project: QuickMirror, Configuration: Debug_RPi x64 ------
1>rcc qml.qrc
1>Invoking 'mkdir -p $(dirname qml.qrc); mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/main.qml); mkdir -p $(dirname /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Debug_RPi/rcc/qrc_qml.cpp); (/home/user/raspi/qt5/bin/rcc /mnt/c/Users/user/Source/Repos/QuickMirror/qml.qrc --name qml -o /mnt/c/Users/user/Source/Repos/QuickMirror/obj/x64/Debug_RPi/rcc/qrc_qml.cpp)', working directory: '/mnt/c/Users/user/Source/Repos/QuickMirror'
1>Starting remote build
1>Compiling sources:
1>qrc_qml.cpp
1>Linking objects
1>QuickMirror.vcxproj -> C:\Users\user\Source\Repos\QuickMirror\bin\x64\Debug_RPi\QuickMirror.out
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

要在每次構建結束時自動復制應用程序文件,可以在“ WSL構建后事件”屬性頁中設置以下命令(ATTN: 這將以明文形式保存設備密碼)。

C:\Users\user> scp C:\Users\user\Source\Repos\QuickMirror\bin\x64\Debug_RPi\QuickMirror.out pi@192.168.1.98:/home/pi/

pi@192.168.1.98's password:

QuickMirror.out 100% 465KB 1.6MB/s 00:00

C:\Users\user>

在啟動Qt Quick應用程序之前,我們需要設置一些必需的環境變量:

  • LD_LIBRARY_PATH
    Qt二進制文件安裝目錄的路徑。

  • QT_QPA_PLATFORM
    平臺插件。

  • QT_QPA_PLATFORM_PLUGIN_PATH
    平臺插件安裝目錄的路徑。

  • QT_QPA_EGLFS_PHYSICAL_WIDTH
    QT_QPA_EGLFS_PHYSICAL_HEIGHT

    物理屏幕的寬度和高度,以毫米為單位。

  • QML2_IMPORT_PATH
    安裝的QML模塊的路徑。
pi@raspberry-pi:~$ export LD_LIBRARY_PATH="/usr/local/qt5pi/lib"
pi@raspberry-pi:~$ export QT_QPA_PLATFORM="eglfs"
pi@raspberry-pi:~$ export QT_QPA_PLATFORM_PLUGIN_PATH="/usr/local/qt5pi/plugins/platforms"
pi@raspberry-pi:~$ export QT_QPA_EGLFS_PHYSICAL_WIDTH="326"
pi@raspberry-pi:~$ export QT_QPA_EGLFS_PHYSICAL_HEIGHT="520"
pi@raspberry-pi:~$ export QML2_IMPORT_PATH="/usr/local/qt5pi/qml"
pi@raspberry-pi:~$ ./QuickMirror.out

樹莓派顯示器

在Raspberry Pi中運行“ Hello World”應用程序

開發應用程序

我們的應用程序的要求包括顯示以下信息:

  • 當前時間
  • 當前日期
  • 周年紀念
  • 天氣預報
  • 下次出發的公共交通工具
  • 新聞

我們將把每個項目封裝為專用的QML類型。為此,我們必須首先將QML模塊定義(qmldir)文件添加到項目中:

  • 選擇“項目>添加新項。。> Qt> QML模塊定義”。
  • 在位置字段中,指示將包含QML文件的文件夾的路徑。

向項目添加新的QML模塊定義

按下“添加”后,qmldir 文件將在項目樹中可用。我們將使用此文件來定義每種QML類型到其對應源文件的映射。

ApiCall         1.0 QuickMirror.ApiCall.qml
Calendar        1.0 QuickMirror.Calendar.qml
Clock           1.0 QuickMirror.Clock.qml
NewsTicker      1.0 QuickMirror.NewsTicker.qml
OnThisDay       1.0 QuickMirror.OnThisDay.qml
PublicTransport 1.0 QuickMirror.PublicTransport.qml
Weather         1.0 QuickMirror.Weather.qml

要將新的QML源文件添加到項目中:

  • 選擇“項目>添加新項...> Qt> QML文件”。
  • 將位置設置qmldir為創建文件的相同目錄。
  • 設置QML文件名。
  • 按“添加”。


我們將首先添加QML類型以顯示當前時間,當前日期和重要的周年紀念日。該Clock類型將顯示當前時間,每秒刷新一次。

QuickMirror.Clock.qml

  function refresh() {
        text = (new Date).toLocaleTimeString(Qt.locale("de_DE"), "hh:mm");
    }
    Component.onCompleted : refresh();
    Timer {
        interval: 1000; running: true; repeat: true onTriggered: parent.refresh();
    }
} 

Calendar類型將顯示當前日期,并在不同語言環境之間循環。

QuickMirror.Calendar.qml

Text {
    renderType: Text.NativeRendering
    id: calendar
    color: "white"
    font.family: FontFamily_Bold
    font.styleName: FontStyle_Bold
    font.pointSize: 72
    property var locales: ["en_US", "de_DE", "pt_PT"]
    property var localeIdx: 0
    function capitalize(s) {
        return s.replace(/(^|-)./g, function(c) { return c.toUpperCase(); });
    }
    function setNextLocale() {
        localeIdx = (localeIdx + 1) % locales.length;
    }
    function getCurrentText() {
        var date = new Date;
        var locale = Qt.locale(locales[localeIdx]);
        var calendarText = capitalize(date.toLocaleDateString(locale, "dddd, dd"));
        var monthShort = date.toLocaleDateString(locale, "MMM");
        var monthLong = date.toLocaleDateString(locale, "MMMM");
        if (monthLong.length <= 5) { calendarText += capitalize(monthLong); } else { calendarText += capitalize(monthShort); if (!monthShort.endsWith(".")) calendarText += "."; } calendarText += date.toLocaleDateString(locale, " yyyy"); return calendarText; } Component.onCompleted: { text = getCurrentText(); } Timer { interval: 15000; running: true; repeat: true onTriggered: { setNextLocale(); text = getCurrentText(); } } Behavior on text { SequentialAnimation { NumberAnimation { target: calendar; property: "opacity"; to: 0.0; duration: 1000 } PropertyAction { target: calendar; property: "text" } NumberAnimation { target: calendar; property: "opacity"; to: 1.0; duration: 500 } } } }

除了日期/時間,我們的應用程序還將依靠Web API來檢索信息。我們將curl在一個單獨的過程中運行以連接到Web API。流程創建將由名為的C ++類處理Process。然后,QML類型ApiCall將使用一個Process對象以curl必要的參數開始并收集其輸出。

QuickMirror.ApiCall.qml

Item {
    property var url: ""
    property var path: []
    property var query: []
    signal response(var response)
    signal error(var error)
    Process {
        id: curl
        property var path: Q_OS_WIN ? "C:\\Windows\\System32\\curl.exe" : "/usr/bin/curl"
        property var request: ""
        command: path + " -s \"" + request + "\""
    }
    function sendRequest() {
        curl.request = url;
        if (path.length > 0)
            curl.request += "/" + path.join("/");
         if (query.length > 0)
            curl.request += "?" + query.join("&");
        curl.start();
    }
    Connections {
        target: curl
        onExit /*(int exitCode, QByteArray processOutput)*/ : {
            if (exitCode != 0) {
                console.log("ApiCall: exit " + exitCode);
                console.log("==== ApiCall: request: " + curl.request);
                return error("exit " + exitCode);
            }
            try {
                return response(JSON.parse(processOutput));
            } catch (err) {
                console.log("ApiCall: error: " + err.toString());
                console.log("==== ApiCall: request: " + curl.request);
                console.log("==== ApiCall: response: " + processOutput);
                return error(err);
            }
        }
    }
}

要創建ProcessC ++類:

  • 選擇“項目>添加Qt類> Qt類”
  • 將類名設置為Process
  • 按“添加”


class Process : public QProcess
{
    Q_OBJECT
    Q_PROPERTY(QString command READ command WRITE setCommand NOTIFY commandChanged)

public:
    Process(QObject* parent = 0);
    ~Process();

public:
    Q_INVOKABLE void start();
    void setCommand(const QString& cmd);
    QString command() const;

signals:
    void commandChanged();
    void exit(int exitCode, QByteArray processOutput);

protected:
    void onFinished(int exitCode, QProcess::ExitStatus status);
    void onErrorOccurred(QProcess::ProcessError error);

private:
    QString m_command;
};

Process.cpp

Process(QObject* parent) : QProcess(parent)
{
    connect(
        this, QOverload::of(&QProcess::finished),
        this, &Process::onFinished);
    connect(
        this, &QProcess::errorOccurred,
        this, &Process::onErrorOccurred);
}

Process::~Process()
{
}

void Process::setCommand(const QString& cmd)
{
    if (cmd != m_command) {
        m_command = cmd;
        emit commandChanged();
    }
}

QString Process::command() const
{
    return m_command;
}

void Process::start()
{
    if (state() == ProcessState::NotRunning)
        QProcess::start(m_command);
    else
        qInfo() << "==== QProcess: ERROR already running:" << m_command; } void Process::onFinished(int exitCode, QProcess::ExitStatus status) { emit exit((status == ExitStatus::NormalExit) ? exitCode : -1, readAll()); } void Process::onErrorOccurred(QProcess::ProcessError error) { qInfo() << "==== QProcess: ERROR " << error; }

main.cpp

int main(int argc, char* argv[])
{
    qmlRegisterType("Process", 1, 0, "Process");
...

OnThisDay QML類型將使用的實例,通過它們來獲取顯著的紀念日列表和循環每隔幾秒鐘。 ApiCall

QuickMirror.OnThisDay.qml

Item {
    id: onThisDay
    clip: true
    property int viewportHeight
    property var events: []
    property var births: []
    property var deaths: []
    property int idxEventType: -1
    ApiCall {
        id: onThisDayApi
        property int month: 0
        property int day: 0
        property string eventType: ""
        url: "http://byabbe.se"; path: ["on-this-day", month, day, eventType + ".json" ]
        onResponse: {
            if ("events" in response) {
                events = shuffle(response.events);
                eventType = "births";
                sendRequest();
            } else if ("births" in response) {
                births = shuffle(response.births);
                for (var i in births)
                    births[i].year = "*" + births[i].year;
                eventType = "deaths";
                sendRequest();
            } else if ("deaths" in response) {
                deaths = shuffle(response.deaths);
                for (var i in deaths)
                    deaths[i].year = "?" + deaths[i].year;
                next();
            }
        }
    }
    function init() {
        events = [];
        births = [];
        deaths = [];
        idxEventType = -1;
        var today = new Date;
        onThisDayApi.month = today.getMonth() + 1;
        onThisDayApi.day = today.getDate();
        onThisDayApi.eventType = "events";
        onThisDayApi.sendRequest();
    }
    function next() {
        if (events.length + births.length + deaths.length == 0)
            return;
        var today = new Date;
        if (onThisDayApi.month != today.getMonth() + 1 || onThisDayApi.day != today.getDate())
            return init();
        onThisDayText.color = "white";
        idxEventType = (idxEventType + 1) % 3;
        var event;
        switch (idxEventType) {
            case 0:
                if (events.length == 0)
                    return next();
                event = events.shift();
                events = shuffle(events);
                events.push(event);
                break;
            case 1:
                if (births.length == 0)
                    return next();
                event = births.shift();
                births = shuffle(births);
                births.push(event);
                break;
            case 2:
                if (deaths.length == 0)
                    return next();
                event = deaths.shift();
                deaths = shuffle(deaths);
                deaths.push(event);
                break;
        }
        onThisDayText.text = event.year + " – " + event.description;
        showText.start();
    }
    Component.onCompleted: {
        init();
    }
    Timer {
        id: timerRetry
        interval: 10000; running: true; repeat: true
        onTriggered: {
            if (events.length + births.length + deaths.length == 0)
                init();
        }
    }
    SequentialAnimation {
        id: showText
        PropertyAction { target: onThisDayText; property: "y"; value: 25 }
        NumberAnimation { target: onThisDayText; property: "opacity"; to: 1.0; duration: 500 }
        PauseAnimation { duration: 3000 }
        NumberAnimation {
            target: onThisDayText
            property: "y"
            to: Math.min(-(25 + onThisDayText.contentHeight) + viewportHeight, 25)
            duration: Math.max(0, (Math.abs(to - from) * 1000) / 25)
        }
        PauseAnimation { duration: 3000 }
        NumberAnimation { target: onThisDayText; property: "opacity"; to: 0.0; duration: 1000 }
        onFinished: {
            onThisDay.next();
        }
    }
    Text {
        renderType: Text.NativeRendering
        id: onThisDayText
        wrapMode: Text.WordWrap
        font.family: FontFamily_Normal
        font.styleName: FontStyle_Normal
        font.pointSize: 40
        textFormat: Text.RichText
        color: "white"
        y: 25
        anchors.left: parent.left
        width: parent.width
        height: contentHeight
        opacity: 0
    }
    Rectangle {
        id: top
        anchors.top: parent.top
        anchors.left: parent.left
        width: parent.width
        height: 10
        gradient: Gradient {
            orientation: Gradient.Vertical
            GradientStop { position: 0.0; color: "black" }
            GradientStop { position: 0.5; color: "transparent" }
        }
    }
    Rectangle {
        id: bottomFade
        anchors.top: parent.top
        anchors.topMargin: viewportHeight
        anchors.left: parent.left
        width: parent.width
        height: 0.1 * viewportHeight
        gradient: Gradient {
            orientation: Gradient.Vertical
            GradientStop { position: 0.0; color: "transparent" }
            GradientStop { position: 0.5; color: "black" }
        }
    }
    Rectangle {
        anchors.top: bottomFade.bottom
        anchors.bottom: parent.bottom
        anchors.left: parent.left
        width: parent.width
        color: "black"
    }
}

現在,我們已經定義了一些應用程序的QML類型,我們將它們排列在主QML文件上。

main.qml

import "QuickMirrorTypes"

Window {
    visible: true
    title: qsTr("Quick Mirror")
    Flickable {
        anchors.fill: parent
        contentWidth: mirror.width
        contentHeight: mirror.height
        Rectangle {
            id: mirror
            width: 1080
            height: 1920
            color: "black"

            Clock {
                id: clock
                anchors.top: mirror.top
                anchors.left: mirror.left
            }

            Calendar {
                id: calendar
                anchors.top: clock.bottom
                anchors.topMargin: -20
                anchors.left: mirror.left
            }

            Rectangle {
                anchors.top: calendar.bottom
                anchors.topMargin: -5
                anchors.left: mirror.left
                width: 800
                height: 2
                color: "white"
            }

            OnThisDay {
                id: onThisDay
                anchors.top: calendar.bottom
                anchors.left: mirror.left
                anchors.leftMargin: 10
                anchors.bottom: mirror.bottom
                width: 780
                viewportHeight: 260
            }
        }
    }
}

最后,qmldir 必須將QML文件和該文件全部添加到應用程序的資源文件中:

  • 雙擊項目樹中的QRC文件
  • 在“ Qt資源編輯器”窗口中,按“添加>添加文件”
  • 選擇所有QML文件和qmldir文件
  • 在Qt資源編輯器中按“保存”

構建和部署后,我們將能夠啟動應用程序并查看顯示的信息。

樹莓派顯示器

在Raspberry Pi上運行的應用程序

在Visual Studio中進行調試

VS支持通過調試在WSL上運行的應用程序gdb。要在Raspberry Pi上運行時進行調試,我們將使用啟動應用程序gdbserver,然后配置gdb為連接到設備并啟動遠程調試會話。

為此,gdb WSL中安裝的組件必須支持目標設備體系結構。一種簡單的方法是安裝gdb-multiarch。為了確保VS使用正確的調試器,我們將創建從gdb到的符號鏈接gdb-multiarch

WSL命令外殼

user@buildhost:~$ sudo apt-get install gdb-multiarch
...
user@buildhost:~$ cd /usr/bin
user@buildhost:/usr/bin$ sudo mv gdb gdb-bkup
user@buildhost:/usr/bin$ sudo ln -s gdb-multiarch gdb
user@buildhost:/usr/bin$ ls -go gdb*
lrwxrwxrwx 1 13 Sep 2 11:31 gdb -> gdb-multiarch
-rwxr-xr-x 1 8440200 Feb 11 2020 gdb-bkup
-rwxr-xr-x 1 15192808 Feb 11 2020 gdb-multiarch
user@buildhost:/usr/bin$

要在Visual Studio中設置遠程調試會話,必須將兩個附加命令傳遞給gdb。這是在“ GDB調試器”屬性頁面中配置的。

Project Properties &gt; Debugging > Additional Debugger Commands

target extended-remote 192.168.1.98:2345
set remote exec-file /home/pi/QuickMirror.out

在開始遠程調試會話之前,我們必須設置所需的環境變量并gdbserver在設備上啟動。

Raspberry Pi命令外殼

pi@raspberry-pi:~$ export LD_LIBRARY_PATH="/usr/local/qt5pi/lib"
pi@raspberry-pi:~$ export QT_QPA_PLATFORM="eglfs"
pi@raspberry-pi:~$ export QT_QPA_PLATFORM_PLUGIN_PATH="/usr/local/qt5pi/plugins/platforms"
pi@raspberry-pi:~$ export QT_QPA_EGLFS_PHYSICAL_WIDTH="326"
pi@raspberry-pi:~$ export QT_QPA_EGLFS_PHYSICAL_HEIGHT="520"
pi@raspberry-pi:~$ export QML2_IMPORT_PATH="/usr/local/qt5pi/qml"
pi@raspberry-pi:~$ gdbserver --once --multi :2345
Listening on port 2345

按F5將啟動遠程調試會話。

在遠程調試期間在C ++代碼中的斷點處停止

遠程QML調試

在嵌入式設備上運行應用程序時,也可以調試QML代碼。

  • 在Qt設置中啟用QML調試:項目屬性> Qt項目設置
  • 用于啟動QML調試會話的安裝程序參數

項目屬性>調試>程序參數

-qmljsdebugger=port:8989,host:192.168.1.98,block


打包

我們已經展示了如何使用Qt VS Tools擴展在帶有Qt Quick的Visual Studio中創建多平臺嵌入式應用程序。這包括:

  • 從頭開始創建Qt Quick項目
  • 用QML編寫應用程序代碼
  • 交叉編譯應用程序
  • 在嵌入式設備上部署和運行
  • 在Visual Studio中對C ++和QML代碼進行遠程調試

該項目,包括所有源代碼,可從以下網址獲得:https : //github.com/micosta/quickmirror。

我們的應用程序在嵌入式設備上運行


應用程序在嵌入式設備上運行

感謝您的閱讀和對Qt和VS Tools擴展的關注。如果您有任何疑問或建議,請在下面發表評論。

如果這篇文章沒能滿足你的需求、點擊獲取更多文章教程!現在立刻下載Qt免費試用吧!更多Qt類開發工具QtitanRibbonQtitanChartQtitanNavigationQtitanDockingQtitanDataGrid在線訂購現直降1000元,歡迎咨詢慧都獲取更多優惠>>

掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
精品视频在线观看免费观看 | 国产亚洲精品一二区 | 国产亚洲精品自拍 | 人人玩人人添人人澡免费 | 国产欧美一区二区三区涩涩 | 日韩在线精品国产亚洲欧美 | 三级高清在线 | 国产桃色在线成免费视频 | 国产日韩欧美精 | 香港三级台湾三级在线播放 | 国产欧美日韩综合精品一级 | 欧美日韩国产日韩 | 欧美人与物videos另类 | 青青青在线播 | 噼里啪啦电影在线观看免费 | 欧美亚洲日韩一区二区三区中 | 欧美精品v国产精品v日韩精品 | 激情欧美视频 | 国产性爱一级 | 字幕在线 | 91午夜理伦私 | 国产精品女同 | 伊人成年网站综合网 | a天堂中文在线天堂资源中文 | 国产在线视频不卡一区二区 | 亚洲欧美日本v | 日皮视频免费 | 欧美色欧美亚洲高清在线观看 | 日韩国产欧美二区手机在线 | 国产制服国产制服一区二区 | 国产偷啪视频一区 | 成人无号精品 | 国产suv精品一区二区69 | 国产精品自产拍在线观看55 | 91成人影院 | 国产一区视频一区欧美 | 大伊香蕉精品一区视频在线 | 日韩精品电影亚洲一区 | 国产91精品免费专区 | 老司机在线观看日韩 | 国产一级性爱视频 | 国产性天天综合网 | 国产欧美日韩一区二 | 51国产黑色丝袜高跟鞋 | 亚洲第一区日韩欧美精品 | 精品午夜一区二区福利 | 成年在线网站免费观看无广告 | 欧美最猛| 喷水的视频一区二区三区 | 亚洲欧美国 | 日韩在线观看中文字幕一区二区 | 国产超薄黑色丝袜在线观看 | 国产一区二区三区精品在线 | 综合五月天堂 | 欧美小视频在线 | 日本高清另 | 囯产亚州中文字幕日韩在线 | 人妖欧美精品二区 | 国产高清乱理 | 欧美三级大片在 | 色一情一伦一区二区三 | 日韩亚洲不卡中文字幕在线 | 免费va人成视频网站全 | 国产精品亚洲片 | 国产激情丁香在线观看网址大全 | 最好的观看2025中文 | 国产人碰人摸人爱免费视频 | 日韩在线1区精品 | 国产精品乱伦一区二区 | 国产精品欧美亚洲制服 | 国产精品不卡在线观看的a站 | 日本视频免 | 国产精品亚洲欧美 | 91日韩高清在线观看播放 | 欧美午夜不卡在线观看最新 | 成人全黄三级视频在线观看 | 国产精品高颜值极品美女 | a级粗大硬长爽猛视频免费 国产亚洲老 | 偷窥视频| 日本亚洲精品视频 | 国产情侣普通话对白发布 | 一个人在线视频免费观看www | 国产在线观看永久免费 | 欧美亚州视频在线播放国产 | 欧美一区二区不卡高 | 日本女一区二 | 日韩欧美美女视频网 | 久爱免费观看在线网站 | 国产一级淫片免费播放 | 亚洲精品免费看日韩 | 成人国产经典视频在线观看 | 日本在线不卡二区三区 | 另类国产精品一区二区 | 国产va免费高清在线观看 | 欧美日韩亚洲高清精品 | 日韩精品激情中文一区 | 国产片v | 日本夫妻激情生活b区 | 欧美日本一91视频国产 | 欧洲自拍拍偷综合 | 日韩欧美成末人一区二 | 亚洲欧美日韩另类精品一区二 | 成全视频在线观看大全 | heyzo色综合中文 | 国产精品一区二区不卡的视频 | 成人α片免费视频在线观看 | 日韩激情视频在线 | 五月丁香六月综合激情在线观看 | 欧美性老少配bbbbbxx | 亚洲丝袜在线 | 精品在线观看三级国产 | 国语对白嫖老妇胖老太 | 福利片免费 | 自偷自拍| 国产免费一级视频在线观看 | 精品国产色欧洲激情 | 人人添人人 | 亚洲精品国产一级高清在线观看 | 国产日韩第一页亚洲 | 国产按摩院在线网站 | 日本免费一区二区三区在线看 | 国产综合精品在线 | 成综合网网站欧美 | 国产精品爽黄69天堂a | 国产+激情四射 | 国产第一福利影院 | 亚洲国产一区二区三区综合片 | 热播电视剧电影高清免费在线观看 | 99在线在线视频免 | 欧美激情在线免费观看 | 国产国产人免费人成成免视频 | 亚洲香蕉综合在人在线视看 | 亚洲精品有码在线观看 | 国产亚洲精品影视在线产品 | 亚洲精品在线视频 | 成人拍拍 | 中文字幕乱 | 女の乳搾りです在线观看 | 国产在线观看免费视频 | 日本一区2区免 | 免费看美女脱了全身衣服直播 | 精品三级| 日韩欧美高清一区 | 国产伦子伦对白视频 | 欧美日韩精品一二三区在线视频 | 一个人看的免 | 欧美激情都市国产 | 99re66在线观看精品免费 | 国产一区二区精品尤物 | 国内老熟夫对白hdxxxx | 特级西西| 秋霞电影费理 | 欧美大胆a | 欧美一级a视频免费放新闻 欧美午夜一区二区之蜜桃 门卫老头吮她 | 最近中文字幕免费高清mv视 | 国产精品制服一区二区 | 成年人永久免费观看视频 | 日韩电影中文字幕 | 国产日韩欧美在线精品综合网 | 国产高清乱理伦片中文 | 护士在办公室被躁bd在线观看 | 成年动漫h视频在线观看 | 日韩综合视频威尼斯在线 | 欧美日韩免费播放一区二区 | 国产自愉自愉免费24区 | 91丝袜在线观看 | 国产精品自在线午夜福利高 | 欧美日韩精品一区二区在线 | 欧美激情视频在线观看一区 | 成人天堂资源在线观看 | 亚洲午夜视| 久艹国产精品久艹视频 | 国产99在线| 国产在线91精品入口 | 国产偷∨国产偷∨精品视频 | 乱伦精品国产高清 | 国产欧美综合精品一区二区 | 国产大奶在线播放 | 99玖玖爱视频在线观看 | 乱子xxxxvideos| 日本一本专区一区二区三区 | gogogo高清在线播放韩国 | 日韩精品欧美激情国产一区 | 中文字幕日韩精品第一页 | 亚洲国产精品一区二区三区 | 国产精品香蕉在线一区二区 | 短视频在线下载免费 | 福利在线观看 | 亚洲va | 国产精品色片 | 97在线观看免费视频观看 | 成+人+黄+色+免费观看 | 日产美产国产一区 | 在线观看成人影院 | 国产视频网站在线 | 丰满尤物一区二区三区 | 成人免费观看做爰视频胸大 | 水蜜桃亚洲一二三四在线 | 精品美模顾欣欣无圣光 | 91中文字幕永久 | 天天射网| 97奇米伊人精品视频观看 | 可以免费观看的电影网 | 国产精品女主播主要上线 | 国产综合在线观看一区 | 在线观看精品国产 | 一级风流片a级在线播放 | 欧美日韩国产一线天午夜秀场 | 91影院网 | 欧美日韩第一区视频在线观看 | 免费观看最新电影和热门影视剧 | 国产精品亚洲精品五月 | 国产精彩亚洲中文 | 卡通动漫精品一 | 国产极品尤物铁牛tv网站 | 亚洲欧洲日产国码a | 成年人永久免费观看视频 | 国产的中文字幕在线观看 | 成人性生交大片免费看中文 | 亚洲欧美日韩综合在线丁香 | 91精品国产福利在 | 免费午夜色激情视频网站 | 欧美日韩视费观 | 国产欧美日韩一区二区加勒比 | 美腿丝袜亚洲综合在线视频 | 男人操女人免费在线观看 | 国产青榴视频在线观看网站 | 水莓100免 | 欧美日韩成人一区二区三区 | 国产综合成色在线视频 | 日本xxx| 精品欧美一区二区3d动漫 | 91精品欧美产品免费观看 | 亚洲国产一区二区在线免费 | 日本簧片在线观看 | 妺妺窝人体色777777 | 国产高清自拍一区 | 黑人精品一区二区三区不卡 | 国产精品视频观看 | 国产在线播放免费人成视频播放 | 国产一区二区三区猎奇视频 | 日韩欧美vr视频在线看 | 国产精品猎奇系列在线观看 | 欧洲美熟女乱又伦免费视频 | 久在线中文字幕亚洲日韩 | 日韩一区二区免费视频 | 亚州高清国产āv视频 | 国产在线看片成人免费视频 | 秋霞电影午夜在线观看 | 精品国产高清自在线一区二区三区 | 国产一区二区丝袜美腿在线 | 国产精品三 | 国产欧美日韩精品第三区 | 中文字幕亚洲欧美日韩专区 | 国产sm重味一区二区三区 | αv在线视频免费观看男人 精品区2区 | 国产精品又大又爽又硬 | 国产免费一区二区三区在线看 | 国产乱子伦精品免费高清 | 免费国产亚洲精品在线视频 | 91视频精品全国免费观看 | 91免费视频亚洲精品 | 精品福利一区二区在线观看 | 亚洲中文字幕精品一区二区三区 | 欧美精品1区国新欲乱视频 国产精品一区二区无线 | 乱伦精品国产高清 | 欧美日韩免费一区二区在线观看 | 国产又色又爽又黄刺激的网站 | 日韩一级品 | 国产亚洲欧美另类一区二区三区 | 99热这里只有精品6免费 | 碰免费公开视频97 | 国产色系视频免费在线观看 | 精品国语自产拍在线观看 | 三级视频网站在线观看视频 | 欧美性色欧美a在线在线播放 | 7799天天综合入口精品 | 日韩欧美国产动漫在线 | 日本高清一区二区三区欧美 | 中美日韩亚洲高清 | 亚洲国产精品∨a在线看黑人 | 梦乃爱华作品在线观看播放 | 国产精品v日韩精品 | 国产一区二区三区乱码网站 | 热99r| 国产亚洲欧洲精品 | 亚洲国产精品第一区二区三区 | 丰满大码女优aⅴ在线 | 日本五级床片午夜视频 | 国产精品福利在线观看 | 免费观看国产视频 | 欧美日韩一本无线码专区 | 日韩v片在线 | 国产在线ts人妖免费视频 | 动漫免费在| 精品综合色 | 精品亚洲欧美无人区乱码 | 亚洲开心婷婷中文字幕一区 | 国产黑色丝袜在线观看下 | 欧美中文字幕在 | 全部视频欧美日韩在线无人 | 日韩精品在线视频一区二区三区 | 欧美日韩亚洲综合在线一区二区 | 国产亚洲精品一二区 | 精品国产第一国产综合精品 | 视频在线观看免费网站 | 国农村精品国产自线拍 | 国产精品偷伦视频观看免费 | 国产精品日韩精品日本精品 | 成人欧美日韩在线观看 | 国产日本欧美三区 | 午夜亚洲国产理论片中文飘 | 乱伦免费国产精品 | 欧美一级a国产女香蕉在线 日韩系新ww44ww | 五月婷婷中文字幕 | 国产精品综合一区二区 | 欧美影院一区 | 日韩欧美精品一区二区三区 | 免费一级e一片在线播放 | 国产伦精品一区二区三区视 | 久欠免费看| 九九精品国产99精品 | 国产专区视频在线观看 | 国产做爰免费视频观看 | 日韩精品亚 | 在线播放亚洲精品 | 水蜜桃视频网站在线观看网址 | 亚洲影院 | 精品亚洲中文字幕 | 精品蜜臀一区二区三区在线 | 灬大ji巴太粗太长了h | 亚洲国产精品∨a在线看黑人 | 国产a∨国片精品青草视频 韩国精品一区二区三区在线 | 精品国产污免费 | 欧美精品免费一区欧 | 国产免费高清69式视频在线观看 | 国产精品视频系列专区 | 日韩欧美国产一区精品 | 日韩免费一区二区三区中文字幕 | 国产精品系列在线观看 | 另类在线观看网站 | 欧美日韩精品一区二区免费高清 | 亚洲精品不卡影院 | 国产传媒在线播放 | 亚洲九九九九精品 | 俺去俺来也在线观看 | 亚洲码在线观看 | 亚洲精品美女久 | 日本五级床片午夜视频 | 国产美女主播在线观看 | 国产一级特黄a大片免费 | 亚洲精品成人区在线观看 | 免费观看性欧美大片无片 | 日韩精品一区二区三区中文字幕 | 国产盗摄91精品一区 | 欧美激情国产日韩 | 免费高清电影在线观看 | 免费国产亚洲视频在线播放 | 国产精品va无 | 国产精品欧美日韩视频一区二区 | 日韩午夜理论免费tv影院 | 韩国日本免费高清观看网址 | 国产日韩中文字幕 | 欧美日本专区 | 国产蝌蚪视频在线观看 | 国产日本欧美高清免费区 | 中文字字幕在线中文乱码电影 | 国产国产人成免费视频77777 | 国产又粗又大又长又猛在线视频 | 午夜福利电影 | 午夜高清性色生活片 | 福利社影院| 性爱网在线免费 | 神马午夜影院 | 亚洲欧洲国产码专区在线观看 | 日韩欧美国产一 | 日韩欧美精品成人免费高清 | 精品一区二区三区中 | 国产精品自在线拍国产第一页 | 精品视频免费 | 国产在线中文字幕 | 完整版在线观看 | 国产一级精品在线播 | 天天天天躁天天爱天天碰2025 | 中国领先的综合视频网站 | 国产一区二区在线视频播放页 | 一级特黄h厂视频网站 | 靠逼视频一区二区三区 | 国产偷∨国产偷∨精品视频 | 日韩免费 | 国产美妇视频在线观看 | 国语对白刺激精品视频 | 国产丝袜在线精品丝袜不卡 | 久99热这里只有精品 | 欧美综合在线观看 | 国产视频91完整版播放 | 精品一区二区三区3d动漫 | 欧美亚洲国产另类制服丝袜 | 国产精品岛国 | 182tv精品视频在线播放 | 国产精品入口 | 免费精品一区 | 精品国产一区二区三区2025 | 国产一级免费在线观看 | 秋霞电影亚洲一区二区三区 | 日本留學| 国产福利不卡免费视频在线观 | 18视频免费网址在线观看 | 欧美一区二区三区在线直播 | 成人字幕网视频在线观看 | 男动漫gay片cartoon | 精品国产欧美一区二区三区成人 | 日韩欧美综合在线二区三区 | 亚洲日韩电影网天堂影院 | 欧美性爱中文字幕无 | 国产精品国语自产拍在线观看 | 日本一区二区三区在线播放 | 香蕉视观看在线a | 欧美福利 | 日韩美女网站在线看 | 国产一区二区在线观看免费 | 天天槽天天槽天天槽 | 最新全网影视大全电影电视剧 | 日本韩国精品一区二区乱码 | 国产在线观看网站萌白酱视频 | 国产制服亚洲 | 日本理论午夜高清中文字幕 | 欧洲va亚洲va韩国va | 国产亚洲人在线观看不卡 | 国产日韩精品一区二区三 | 日韩综合一卡二卡三卡死四卡 | 久精品国产欧美亚洲色a大片 | 国语精品视频自产自拍 | 精品午夜在线视频观看 | 日本高清不卡一道免费观看 | 国产高跟丝袜脚交视频 | 亚洲精品一二三四区 | 日韩国产中文字幕在线观看 | 女人脱精光一清二楚图片 | 国产精品激情偷乱一区二区∴ | 国产九九免费视频 | 国产卡二卡三卡四卡免费网址 | 国产精品激情偷乱一区二区∴ | 国产在线观看青草视频 | 亚洲无线观 | 日本精品不卡在线观看 | 男人下身进女人阳道视频视频在 | 少女哔哩| 欧美午夜激情影院 | 伦理秋霞电影网 | 三级特黄60分钟在线观看 | 亚洲国产欧美在线观看 | 欧美一级做a爱高清免费观看 | 欧美性爱官网 | 一扒二脱三插片在 | 国产高颜值露脸在线观看 | 五月天激情综合网 | 在线观看成人年视频免费 | 热门影视资源 | 午夜男女爽爽羞羞影院在线观看 | 男人插曲女人视频软件 | 欧美精品v日韩精品v国产 | 欧美日韩人人精品影视 | 91精品国产自产在线观永久 | 91蝌蚪91九色 | 末成年ass浓精pics | 成人性午夜视频在线观看 | 精品国产亚洲第一区二区三区 | 国产95在| 亚洲欧洲日韩综合色天使 | 国产乱国 | 亚洲电影 | 日本中文在线观看欧美 | 动漫美女无 | 亚洲开心婷婷中文字幕 | 加勒比色 | 老鸭窝laoyaw| 欧洲美熟女乱又伦免费视频 | 国产va精品免费在线观看 | 日韩欧美限制特级片在线观看 | 精品午夜国| 日本在线观看一区 | 国产精品偷伦费 | 国产一区在线免费 | 国产精品全网免费在线播放 | 国产精品第9页 | 97午夜理伦片在线 | 欧美日韩一区二区三区精品播放 | 亚洲高清一区二区三区不卡 | a级孕妇高清免 | 日本在线观看免费中文字幕 | 日韩午夜理| 日韩视频免 | 国产精品亚洲日日摸夜夜添 | 国产高清乱 | 天天躁日日躁狠狠很躁 | 国产精品女同 | 欧美日韩亚洲国产综合 | 精品国内综 | 中文字幕在线影院 | 欧美嫩交一区二区三区 | 99久热国产精品视频尤物 | 中文字幕日韩wm二在线看 | 精品国产一区二区三区 | 国产亚洲sss | 国产乱理伦片在线观看夜一区 | 亚洲第一色片 | 国产又黄又爽又猛免费视频 | 精品一线二线三线区别在哪欧美 | 国产一区二区三区日韩欧美 | 制服丝袜在线手机国产 | 午夜福利电影在线 | 日韩欧美在线免费播放 | 精品人成在线电影 | 国产午夜福利电影h | 国产中年熟女 | 亚洲欧美香蕉在线日韩精选 | 国产午夜伦伦午夜伦 | 精新精新国产自在现 | 日韩精品一区二区三区影院 | 乌克兰人和猪兽交xⅹx | 国产高清在线a免费视频观看 | 欧美亚洲日韩国产综合网 | www亚洲精品在线观看 | 国产精品自在线拍 | 窝窝午夜看片 | 国产精品美乳在线观看 | 成人看片黄a免费看 | 日产精品一卡2卡三卡4乱码 | 亚洲精品沙发午睡系列 | 免费黄频在线免费观看 | 欧美老妇人xxxx | www国产| 宝贝乖把腿分大一点h欧阳凝小说 | 97中文字幕无线观看 | 在线观看最新国产专区 | 国产乱伦视频中文字幕 | 国产免费v片在线观看完整版 | 女人脱精光一清二楚图片 | 日韩视频在线播放一区二区三区 | 日韩一区精品在线观看 | 91人人| 日本高清视频永久网站www | 欧洲精品aaaaaa在线观看 | 国产人做在线观看 | 日韩欧美国产一级免费 | 91啪在线视频 | 91青青国产在线观看免费 | 成aⅴ人片在线观看蜜桃 | 国产精品精品国产一区二区 | 51电影网 | 欧美日韩精品一区二区在线 | 十分钟在线观看免费直播 | 亚洲中文欧美 | 亚洲综合激情另类小说区 | 日本三级2025| 国产在线一区二区三区四区居文沛 | 三年片中国在线观看免费大全 | 国产一品二品精品在线 | 国内另类视频一区二区三区 | 成人影视大全 | 免费的污污的网站在线观看 | a级国产乱理伦片在线观看国 | 日韩在线免费播放 | 资源视频在线观看 | 国产一级a一级a爰片免费无 | 九九热这里 | 亚洲欧美综合人成在线 | 老司机午夜视频十八福利 | 亚洲综合一区二区三区 | 国产免费v片在线观看完整版 | 国产玖玖玖九九精 | 中文字幕乱老妇 | 日韩欧美一及在线播放 | 国产午夜在线免费 | 区不卡免费观看 | 综合九九 | 日本永久免费aⅴ在线观看 亚洲制服丝袜中文字幕自拍 | 国产夫妇精品自在线 | 在线精品亚 | 国产在线操对白普通话 | 95gao国产| 亚洲电影在线免费观看 | 91tv官网精品观看 | 欧美在线直播 | 欧美精选一区二区 | 欧美福利的日韩片 | 我被两个老外抱着高爽翻了 | 国产00| 卡通欧美制服中文 | 国产精品高清m3u8在线播放 | 中文字幕在线观看亚洲视频 | 欧美性受xxxx黑人xyx性爽 | 日本留學 | 国产香蕉在线观看 | 国产精品自在线午夜福利高 | 国产精品自产拍在线观看 | 91同城 | 国产欧美日韩 | 美国产日产一区∨ | 日本亚洲国产在线视频 | 国产一区二区免费播放 | 国产在线第一页 | 亚洲国产中文在线二区三区免 | 新片速递| 国产午夜不卡一区 | 国产精品白丝喷水在 | 国产亚洲免费在线观看 | 51成人免费动漫在线 | 国产在线精品国自产拍影院午夜 | 青青河边草高清免费版新闻 | 日韩免费视 | 中文字幕一区二区三区免费看 | 特级西西人体444ww | 偷人精品一区二区 | 国内自拍亚洲精选在线观看 | 欧美激情在线导航 | 9re热国产这里只有精品 | 又大又粗又黄又硬又爽又免费视 | 国产精品怡红院在线观看 | 国产日韩精品一区二区 | a人片在线观看苍苍影院 | 午夜视频免费观看 | 中文字幕人成乱码在线观看 | 绿帽视频| 国产一级特黄的片子 | 国产精品偷窥 | 日韩欧美另类视频 | 国产在线欧美一区二区 | 亚洲日韩一区精品射精 | 国产老熟女精品视频大全 | 69视频成人精品免费观看 | 中文字幕按摩做爰 | 国产精品成熟老女人 | 欧美日韩视频在线观看网址 | 五月激情 | 国产激情国语对白 | 99热只有精品在线观看 | 人与动人物a级在线播放 | 水蜜桃视频网站在线观看网址 | 亚洲日韩欧美一区二区三区在线 | 国产午夜福利精品一区二区 | 国产欧美在线手机观看 | 日本三级视频在线观看 | 不卡中文字幕激情视频网站 | 欧美五级在线观看视频播放 | 欧产日产国产精品国产 | 亚洲精品久 | 国产一区二区日韩精品一区在线 | 国产一级特黄aa大片免费 | 一区二区三区在线观看 | 国产精品国语 | 日韩中文免费视频 | 一区二区三区在线看 | 免费高清欧 | 国产乱妇乱子视频在线播放 | 91影视永久福利免费观看 | 泰国一级特黄在线观看大片 | 国产不卡一区二区三区 | 国内精品视频一区二区在线观看 | 国产乱码高清区二区三区 | 免费啪视频观试看视频 | 欧美在线精品亚洲综合网 | 日本aⅴ日 | 国内大学生精品 | 日韩制服丝袜在线视频 | 日韩国产在线观看 | 亚洲一区二区三区四区 | 日本高清一区免费中文视频 | 欧美综合自拍亚洲欧美人 | 日韩在线中文字幕视频 | 文中字幕一区二区三区视频播放 | 日韩欧美一级大片 | 欧美日韩中文综合第一页 | 国产自产在线观看 | 国产精品性爱视频 | 国语自产精品视频在线看 | 国产黄a三级三级看三级 | 亚洲国产中文在线二区三区免 | 欧美日韩在线免费 | 美女视频免费黄的 | 亚洲精品vs中文字幕白桨 | 欧美性爱播放器 | 日韩欧美精品综合在线观看 | 50岁退休 | 豆奶视频官网下载 | 日本高清乱理伦片中文字幕 | 三年片大全在线观看 | 日韩欧美专区 | 91成人短视频在线 | 国产第二区 | 免费国语高清电影电视剧动 | 日本一二三本道 | 欧美毛多 | 国产l精品国产亚洲区在线观看 | 亚洲免费图区在线视频 | 伦理小说中文字幕视频 | 国产一区二区三区精品视频 | 国产在线精品成人一区二 | 在线a亚洲视频播 | 国产综合在线观看一区 | 女同视频在线观看网址 | 欧美日韩一区在线观看 | 黄乱色伦短篇小说 | 国产日韩高清一区二区三区 | 91精品国产高清一区二 | 亚洲欧美日韩另类 | 久青草国产高清在线视频 | 电影网在线好看 | 国产永久页在线观看网址 | 日本欧美三级成人精品 | 羞羞视频免费在线观看 | 精品国产日韩一区三区 | 日韩中文字幕中文有码 | 精品综合国产高清 | 免费亚洲大片app下载 | 51精品国产人成在线观看 | 欧美中文高清日韩 | 亚洲无亚洲人成网站77777 | 99在线在线视 | 色橹橹欧美在线观看视频高 | 18videosex性 | a级国产片在线观看 | 精品国产手机自在线观 | 欧美一区二区电影免费观看 | 精品多人p群 | 欧美日韩在线精品一区二区 | 海角社真实xxⅹ人伦 | 亚洲欧美一区二区综合精品 | 国产精品自产拍在线观看免费 | 精品成品国色天香卡一卡二卡三 | 精品在线观看亚洲中文 | 国产人成视频在线观看 | 羞羞影院成人午夜爽爽在线 | 成人免费va视频 | 国产在线视精品在亚洲 | 99热这里只有成人精品国产 | 韩国床戏激情戏裸戏 | 找老女人泻火 | 99ri日韩精品视频 | 女同精品一区二区 | 五月天综合网 | 99国内精品自在现线 | 天堂成人 | 国产又粗又硬又大爽黄老大爷视 | 久章草在线视频播放国产下载 | 欧美在线a级一区二区三区 精品蜜桃 | 日本免费一区二区三区最新vr | 欧美国产日韩高清在线 | 欧美综合精品一区二区三 | 中文欧美乱码视频 | 亚欧洲乱码视频一二三区 | 日本二三区在线观 | 欧美高清在线视频在线99精品 | 欧美亚洲日韩一区二区三区 | 精品欧美国产一区二区三区不卡 | 国产精品猎奇另类视频 | 一二三产区区 | 亚洲欧洲日产国产最新 | 久中文字幕中文字幕亚洲无线 | 特级bbbbbbbbb视频 | 欧美中文字幕乱码视频 | 国产一线精品一区在 | 日韩丝袜亚洲国产欧美一区 | 在线观看精品国产 | 国产精品日韩精品日本精品 | 国产日韩网站 | 亚洲一区二区三区在线观看 | 国产中文字幕免费不卡 | 91九色蝌蚪熟女 | 国产高清一区二区在线免费观看 | 观看免费视频 | 日韩精品一区二区三区中文字幕 | 99热99re8国产在线播放 | 国产初高中生在线播放 | 95gao国产| 七七影院| 99精品热爱在线观看视频 | 国精产品一品二品国精品69x | 1024在线播放| 国产一区二区真实艹逼视频 | 日本两人免费观看的视频 | 日韩欧综合精品 | 真实国产日韩欧美全部综合视频 | 日韩去日本 | 中文字幕在线有码高清 | 中文在线а天堂中文在线新版 | 欧美人兽一区 | 美日韩综合精 | 午夜国产免费 | 欧美一级特黄乱妇高清视频 | 国产网曝门亚洲综合在线 | 欧美日韩一区高清在线观看 | 欧美成āⅴ人高清免费观看 | 国产人碰 | 国产精品自在线拍国产手机版 | 国产伦理一区二区 | 动漫综艺手机在线观看 | 欧美在线a级一区二区三区 精品蜜桃 |