青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

zhonghua

C++博客 首頁 新隨筆 聯系 聚合 管理
  72 Posts :: 1 Stories :: 4 Comments :: 0 Trackbacks

#

其實很簡單,代碼如下:

            QComboBox *combobox = new QComboBox(this);
            QStringList strings;
            strings << tr("自由") << tr("典型") << tr("默認") ;
            combobox->addItems(strings);

posted @ 2012-03-29 15:49 米米 閱讀(2815) | 評論 (0)編輯 收藏

在實現了newform的2個頁面的功能以后,為了完善產品的人性化,我在第2個頁面上增加了一個顯示前面已經選擇的路徑和模板名稱的功能。但是這里就遇到了一個問題,如果萬一用戶選擇的路徑和名稱都太長了,那么下面在顯示的時候就會截斷,這就很不爽了。

      別看這個小問題,這就涉及了2個技巧。

1. 讓QLabel自適應text的大小,直接用下面的代碼:

LabelName->adjustSize();

2. 讓QLabel能夠自動判斷并換行顯示:

LabelName->setGeometry(QRect(328, 240, 329, 27*4));  //四倍行距

LabelName->setWordWrap(true);
LabelName->setAlignment(Qt::AlignTop);

       還是那句話,別看就實現了這么一個小功能,前期的摸索可真是痛苦。。新手傷不起啊。。

posted @ 2012-03-29 15:48 米米 閱讀(3986) | 評論 (3)編輯 收藏

Qt中使用圖片資源的方法有很多種,以前我一直分不清各種之間的區別和Qt相應的處理機制,后來遇到一些實際的問題,然后再加上查閱源碼和資料,總算弄明白一些事情,但是本文僅僅是個人理解,如有錯誤之處請告訴我,大家一起進步。

 

     圖片是一種資源,而在Qt中,對于資源的使用是有其獨特的方式的!

     ①:一般來說:資源在內存中是用資源對象樹來表示的,該樹在程序啟動時創建。

     ②:而對于資源而言:我們都是需要先將其加入到這棵樹中才能加載到內存中并被程序使用!!

     ③:而將一個圖片資源放到程序的資源對象樹中是用函數QResource::registerResource()來實現的。亦即:要將資源向這顆資源對象樹進行注冊,這樣才對在系統中new創建這個資“葉子”。

        對于這一點我們可以直接查看該函數的源碼:

 

        bool
       QResource::registerResource(const QString &rccFilename, const QString &resourceRoot)
       {
            QString r = qt_resource_fixResourceRoot(resourceRoot);
            if(!r.isEmpty() && r[0] != QLatin1Char('/'))

            {
                 qWarning("QDir::registerResource: Registering a resource [%s] must be rooted in an absolute path (start  with /) [%s]",
                 rccFilename.toLocal8Bit().data(), resourceRoot.toLocal8Bit().data());
                 return false;
            }

            QDynamicFileResourceRoot *root = new QDynamicFileResourceRoot(r);
            if(root->registerSelf(rccFilename))

            {
                 root->ref.ref();
                 QMutexLocker lock(resourceMutex());
                 resourceList()->append(root);
                 return true;
            }
           delete root;
           return false;
    }

   

       由上可見:主要就是先創建了一個資源內存對象,而后將其append到資源對象樹上。

 

   ④:當我們不再使用某個圖片資源時:當然希望其不再占用內存,此時需要釋放delete它。這時要用QResource::unregisterResource()函數來進行反注冊。此函數的作用就是在資源對象樹中遍歷找到代表該資源的節點,而后delete釋放它。源碼為:

 

    bool
    QResource::unregisterResource(const QString &rccFilename, const QString &resourceRoot)
    {
          QString r = qt_resource_fixResourceRoot(resourceRoot);

          QMutexLocker lock(resourceMutex());
          ResourceList *list = resourceList();
          for(int i = 0; i < list->size(); ++i)

          {
               QResourceRoot *res = list->at(i);
               if(res->type() == QResourceRoot::Resource_File)

               {
                    QDynamicFileResourceRoot *root = reinterpret_cast<QDynamicFileResourceRoot*>(res);
                     if(root->mappingFile() == rccFilename && root->mappingRoot() == r)

                     {
                         resourceList()->removeAt(i);
                          if(!root->ref.deref())

                          {
                              delete root;
                              return true;
                          }
                          return false;
                    }
               }
           }
           return false;
   }

 

 

    總起來說就是:一個程序所用的所有資源都是放到一顆資源對象樹中的,當程序啟動時該樹便會自動創建,而當我們使用某個資源時:都需要實現將其向該樹進行注冊,當不需要時則需要進行反注冊。

 

 

    ========================================================================

 

     下邊說一下我常用的使用圖片資源的方式,主要有三種:

 

      1:使用qrc資源文件來加載。

      對于這種方式:其是將所有的圖片資源都轉化成二進制數據,存放在一個靜態數組中,而后放到應用程序中。所以:當程序執行時:所有圖片都會一直在內存中,這楊雖然讀取速度很快,但是很占用內存空間,對于一些內存有限的設備不是很適合。

 

      系統轉換的主要步驟為:

      ①:當編譯時,其會將我們寫的 name.qrc文件轉換生成一個qrc_name.cpp的資源文件,我們可以自己看下這個生成的cpp文件,發現其中就是主要有三個static const數組。

              qt_resource_data[]

              qt_resource_name[]

              qt_resource_struct[]

 

     這其中qt_resource_data[]中存放的就是圖片的二進制數據。而后邊的兩個數組我們猜測是做了一個圖片名字到上邊數據的映射,方便系統找到data中的二進制數據。

 

       至于內部作用機制,有的資料上說是:當使用qrc資源文件時:系統會自動將所有的圖片資源都向程序的資源對象樹進行注冊,并且當程序結束運行時再進行反注冊。這也正好解釋了為什么此種方法下圖片資源會一直占用內存的原因。

 

       使用這種方法時:由于圖片資源一直在內存中,避免了I/O操作,從而加快了讀取速度。但是卻是以消耗內存為代價的。我做過一個project,因為其中用了大量的圖片,結果導致內存使用量超乎想象的大,后來就進行了優化,也就是用了下邊提到的第二種方法。

 

 

     2:手動進行注冊。

       第一種方法相當于靜態加載,但很多情況下我們更希望是動態加載,亦即:用到哪個資源才將該資源加載進來,而不用的則不加載。

 上邊第一種方法之 所以顯示出靜態加載的特性,這是由于系統一次性自動把所有圖片資源都進行了注冊,并且在程序運行過程中一直沒有進行反注冊才導致的。  如果我們可以自行決定:什么時候對那一部分圖片資源進行注冊?什么時候對哪一部分圖片資源進行反注冊。則顯然我們可以手動控制整個資源在內存中的生存周 期!!

    

       這種方法的主要步驟為:

       ①:生成外部二進制資源文件。

       ②:在需要時將該資源向程序的資源對象樹進行注冊并使用。

       ③:在不需要時進行反注冊。

      步驟①主要是用了Qt自帶的一個工具:rcc.exe  (處于bin文件夾中)。這是Qt的一個資源編譯器,其編譯對象是qrc文件,而生成rcc二進制資源文件。

      那我們可以用它來執行命令 rcc -binary name.qrc -o name.rcc  來把qrc資源文件轉成rcc二進制資源文件。

      而后在程序內部:當需要使用某一圖片資源時:則直接調用

     QResource::registerResource(“name.rcc”)進行注冊創建分配內存即可!  而不使用時候則調用反注冊函數!!

 

     --》為了進行驗證,我曾經測試了一個例子,主要思路就是:在一個工程中寫了一個包含若干幅圖片的qrc資源文件,將其轉化成rcc二進制資源文件。   我在程序界面上擺放兩個按鈕button,  其中一個button的click事件響應槽負責調用QResource::registerResource()將這個二進制資源文件注冊, 而另外一個button進行反注冊。  然后跑一下這個程序,查看下其所占用的內存大小:

      

剛啟動時:程序所占內存顯示為:8940K

   

 

 

 

  而后按下第一個button進行注冊,此時占用內存為:9276K

 

  最后點一下另外一個button,進行反注冊后,其占用內存大小為:8948K

 

      

 

      由上測試可見:注冊后才會讓資源占用內存!!反注冊后其會從內存中delete掉!!

 

     所以:這種方式算是動態加載,會少占用內存。但是如果圖片過多的話,什么時候需要加載,什么時候需要去掉,這些邏輯就需要十分注意了。

 

 

    3:直接I/O讀取。

     比如:  ptr->setStyleSheet("./bmp/name.png");

     這種方式我不怎么用,感覺I/O操作速度慢吧,所以一直沒去深究。道理上邊都有。

posted @ 2012-03-29 15:44 米米 閱讀(1270) | 評論 (0)編輯 收藏

方法一:思路很好。值得學習
前兩天有人問我關于如題所示的問題,具體就是說:現在他想做一個按鈕,當click它時:只刪除編輯框中的一個文字,而當常按press時:則連續的刪除文字,此后一旦release,則立即停止刪除問題。

      關于如何刪除一個文字,這個很好實現,這里把重點放在:如何區分這兩種狀態上。

      我在實現時:只用了一個定時器。總體為:當第一次press時間達到0.5s時開始連續刪除,如果按壓的時間不足0.5s即release,則只刪除一個文字;  而連續刪除文字時:是每隔0.1s刪除一個,一旦中途release了,則立即停止刪除文字。

      代碼如下,可以直接拿來用,當然,你需要自己手動實現刪除編輯框中一個文字的函數DeleteOneCharacterInEditor()。

 

 timer1 = = new QTimer(this);

 

QObject::connect(timer1, SIGNAL(timeout ()),

this, SLOT(DeleteOneCharacter()));

QObject::connect(iDeleteButton, SIGNAL(pressed()),this , SLOT(PressDelete()));

QObject::connect(iDeleteButton, SIGNAL(released ()),this, SLOT(ReleaseDelete()));

 

 //-----------------------------------------------------------------------------------------

void  test::PressDelete()  

{

      press = 1;

      timer1->setSingleShot(

true);

      timer1->start(500); 

}

 

void 

test::DeleteOneCharacter()

{

     if(mEditor)

     {

          DeleteOneCharacterInEditor();

     }

     press = 0; 

     timer1->start(100); 

}

 

void   test::ReleaseDelete()

    timer1->stop(); 

    if(press == 1)

    {

        if(mEditor)  

        {

            DeleteOneCharacterInEditor();

        }

}

方法2:
設置QPushButton的autoRepeat的屬性,只要設為true就可以連續刪除了,而且刪除的時間間隔也可以設定。
posted @ 2012-03-29 15:18 米米 閱讀(1314) | 評論 (0)編輯 收藏

在父widget上擺一個子widget后,當click子widget時:只會進入到子widget的相關事件處理函數中,比如進入到 mousePressEvent()中, 而不會進入到父widget的對應事件處理函數中。畢竟:click的是子widget,其遮擋住了父widget,從而父widget接收不到這個事 件。然而事實真的是這個樣子嗎?

     我做了一個測試: 在一個QWidget上建了一個QLabel。而后實現父QWidget的mousePressEvent(), 然后跟一下發現:當我click這個label時:居然能進入到父QWidget的mousePressEvent()中!但是如果把子改成 QPushButton則進入不了!


     咨詢了一下別人,得到的答案是:如果子widget沒有accept或ignore該事件,則該事件會被傳遞給其父親。


   事實也確實如此:

    ①對于QLabel: 如果不重寫mouse處理函數,也沒有設置事件過濾器等操作的話,則相當于:其對mouse這個事件一直沒有進行處理,那沒有進行處理的話,相當于上邊所說的情況,此時該事件會被傳遞給其parent。

    ②而對于QPushButton而言:當click它時:其會發射clicked()信號,其實這就相當于它對該事件的一個operator過程。所以:這里它accept該事件并進行了對應處理。從而:無法傳遞給其父窗口。



    那么:對于一個繼承而來的類,只要我們重寫實現了其各個事件處理函數,則對應的事件肯定無法傳遞給其父widget!  哪怕重寫的該事件處理函數的函數體為空!


   如果是標準的控件對象,則其肯定沒重寫各個事件處理函數。那消息能不能傳遞到父widget中,則取決于中途有沒有使用事件過濾器等將該信號攔截下來了。

posted @ 2012-03-29 15:09 米米 閱讀(633) | 評論 (0)編輯 收藏

使用setStyleSheet來設置圖形界面的外觀:
QT Style Sheets是一個很有利的工具,允許定制窗口的外觀,
此外還可以用子類QStyle來完成,他的語法很大比重來源于html的CSS,但是適用于窗口

概括:
Style Sheets是文字性的設定,對于整個應用程序可以使用QApplication::setStyleSheet() 或者對應一個窗口可以使用QWidget::setStyleSheet(),如果好幾個樣式表在不同的層次上設定,

QT將會集合所有的樣式表來設定外觀,這稱作級串聯
例如:下面的樣式表指定所有的QLineEdit應該用黃色作為他們的背景顏色,所有的核對框應該用紅色作為他們的文本顏色
QLineEdit { background: yellow }
QCheckBox { color: red }

對于這種定制,樣式表比palette調色板更強大,例如使用QPalette::Button role來設定一個按鈕為紅色可能引起危險

對于單獨使用QPalette很難完成的定制,樣式表可以指定
樣式表作用于當前窗口樣式頂部,這意味這應用程序講看起來盡可能的自然,但是任何樣式表系統參數應該考慮,不像QPalette那樣,樣式表提供檢查,如果你設定了一個按鈕的背景顏色為紅

色,你應該確定在所有的平臺按鈕將會有一個紅色的背景,除此,Qt Designer提供樣式表集成環境,使得在不同的窗口樣式中更容易看到樣式表的效果

此外,樣式表可以用來為你的應用程序提供一個出眾的外觀,不需要使用子類QStyle,例如,可以指定任意的圖片為單選按鈕和核對按鈕,來使它們出眾,使用這個技術,也可以獲得輔助的定

制,這將使用幾個子類,例如指定style hint(樣式暗示),可以參看例子 Style Sheet。

當樣式表有效時候,使用QWidget::style()可以返回QStyle,

樣式表語法:
樣式表語法基本和HTML CSS語法一致。
樣式表包含了樣式規則序列,樣式規則有一個<selector>和<declaration>組成,<selector>指定哪些窗口將會被這些規則影響,<declaration>指定哪些屬性將會被設定在窗口上,例如
QPushButton{color:red}
在上面的,規則中,QPushButton是<selector>,{color:red}是<declaration>,這個規則指定QPushButton和他的子類將使用紅色作為前景顏色,就是字體顏色,并且對大小寫沒有分別,對于

color,ColoR,COLOR是一樣的。
幾個<selector>可以同時被列出,使用逗號","來分開各個<selector>,例如:
QPushButton, QLineEdit, QComboBox { color: red }
<declaration>部分是一對 屬性:值  對,用{}來括起來,使用分號來分開各個屬性,例如
QPushButton { color: red; background-color: white }

可以參看Qt Style Sheets Reference來查看部件以及樣式表的屬性列表

關于樣式表的級聯屬性
看下面代碼的不同
 btn1->setStyleSheet("QPushButton{color:red}"); //設定前景顏色,就是字體顏色
 btn1->setStyleSheet("QPushButton{background:yellow}"); //設定背景顏色為紅色

btn1->setStyleSheet("QPushButton{color:red;background:yellow}");
第一個代碼只能顯示黃色背景,第二個確實紅色字體,黃色背景,
所以當設定一個部件時候,要在同一個>setStyleSheet()中完全寫出來。

源代碼示例:

Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    this->setWindowFlags(this->windowFlags()&Qt::WindowMaximizeButtonHint&Qt::WindowMinimizeButtonHint);//為對話框添加上最大化和最小化按鈕
//    layout=new QBoxLayout(this);
    layout1=new QGridLayout(this);
    btn1=new QPushButton(this);
    btn1->setStyleSheet("QPushButton{color:red;background:yellow}");//設定前景顏色,就是字體顏色
//    btn1->setStyleSheet("QPushButton{background:yellow}");
    btn1->setText("Button1");

    btn2=new QPushButton(this);
    btn2->setStyleSheet("QPushButton{color:red;background-color:#c89b64}");//使用rgb來設定背景顏色
    btn2->setText("Button2");

     btn3=new QPushButton(this);
     btn3->setStyleSheet("QPushButton{background-image:url(image/1.png);background-repeat: repeat-xy;background-position: center;background-attachment: fixed;background-attachment: fixed;background-attachment: fixed;;background-clip: padding}");
     //設定按鈕的背景圖片,background-repeat可以設定背景圖片的重復規則,這里設定僅在xy方向都重復,所以圖片會被重復一次
     //background-position用來設定圖片的位置,是左(left)還是右(right),還是在中間(center),是上(top)還是底部(bottom)
     //background-attachment用來這定背景圖片是否卷動或者和窗口大小相匹配,默認是卷動的
     btn3->setText("Button3");

     btn4=new QPushButton(this);
     btn4->setStyleSheet("QPushButton{border: 3px solid red;border-radius:8px}");//設定邊框寬度以及顏色
     //可以使用border-top,border-right,border-bottom,border-left分別設定按鈕的上下左右邊框,
     //同樣有border-left-color, border-left-style, border-left-width.等分別來設定他們的顏色,樣式和寬度
     //border-image用來設定邊框的背景圖片。
     //border-radius用來設定邊框的弧度。可以設定圓角的按鈕
     btn4->setText("Button4");

    //字體設定
     //font-family來設定字體所屬家族,
     //font-size來設定字體大小
     //font-style來設定字體樣式
     //font-weight來設定字體深淺
     //height用來設定其高低
     //selection-color用來設定選中時候的顏色
     edit1=new QLineEdit(this);
     edit1->setStyleSheet("QLineEdit{font: bold italic large \"Times New Roman\";font-size:25px;color:#3764ff;height:50px;border:4px solid #9bc821;border-radius:15px;selection-color:pink}");

    //父窗口的設定
     //icon-size來設定圖片大小
     this->setWindowIcon(QIcon("image/1.png"));
      this->setStyleSheet("QWidget{background:write url(image/2.png);icon-size:20px 5px}"); //設定整個對話框的背景顏色
//      this->setStyleSheet("QWidget{icon-size:20px 5px}");
    layout1->addWidget(btn1,0,0);
    layout1->addWidget(btn2,0,1);
    layout1->addWidget(btn3,1,0);
    layout1->addWidget(btn4,1,1);
     layout1->addWidget(edit1,2,0);
}

這里只給出來widget主窗口的cpp文件,運行得到的結果如下圖

我們看到連粘貼 復制板都變成了使用樣式表來設定的樣式

關于使用樣式表 setStyleSheet()) 來設定窗口樣式的時候因該注意的事項,可以參看

http://blog.csdn.net/xie376450483/archive/2010/08/17/5818759.aspx

posted @ 2012-03-29 14:52 米米 閱讀(990) | 評論 (0)編輯 收藏

原本的想法是在LineEdit的textEdited()事件觸發時,如果輸入了無效的目錄名,則確認按鈕無效,同時LineEdit的字的顏色為紅色,想了老半天要如何解決這個問題,如何判斷是否非法。都想到QString和字符串匹配上面去了。

       后來偶然搜索到一個帖子,提到了QRegExpValidator這個東西。研究了一下,利用一個正則表達式就可以很方便的限制用戶的輸入,代碼如下:

Form的構造函數中的代碼為:

QRegExp regExp("^[A-Za-z0-9_]+$");  //這里的意思是可以輸入包含大小寫字母,阿拉伯數字以及下劃線
nameLineEdit->setValidator(new QRegExpValidator(regExp, this));

       后來把表達式成這樣了:

QRegExp regExp("\w[A-Za-z0-9\-]*");

       這樣的話,目錄中除了第一個字符外可以包含小橫線“-”了,哦也~~
Form類中的一個槽函數為:

void NewForm::on_nameLineEdit_textEdited()
{
    savePushBtn->setEnabled(nameLineEdit->hasAcceptableInput());
}

       發現,按鈕狀態觸發的功能完成了,而在nameLineEdit中輸入時,如果是星號啊,斜杠啊之類的直接就按了鍵也沒反應,即不會顯示到lineedit里面。這就無形之中將我那個想要把非法字符顯示為紅色的功能pass掉了,因為也沒有必要了。

       無論如何解決了一個小問題卻學到了很多。

1,用QRegExpValidator很有用。它將我要做的字符串匹配啊那些操作全部省略了,而對于正則表達式的學習還應該深入一下,因為我還沒完全弄明白。Qt的資料真的很少,而里面內容很多,不可能一下子從頭學,只能隧道式學習了。

2,用on_objectName_SignalName()這個函數命名的槽函數非常方便。它相當于自動會生成這段代碼:

connect ( objectName, SIGNAL(SignalName), this, SLOT(on_objectName_SignalName()))

這也是以前跟黃老師一起討論時,他老說on函數on函數的,我一時沒會過意,現在我明白了。

       下面鏈接兩個網頁,我就不貼過來了,要查的話直接進去看吧:

QT4對話框快速設計:http://xuexg2000.blog.163.com/blog/static/139996409201032912432439/

(在這里我學會了on函數)

QT正則表達式:http://jesserei.blog.163.com/blog/static/121411689201011210846198/

(在這里學會如何設置合法字符)

posted @ 2012-03-29 14:07 米米 閱讀(840) | 評論 (0)編輯 收藏

因為從QLineEdit中獲取的字符串為QString類型, 但是想利用系統調用新建一個目錄,然而,系統調用system(const char *)中必須為const char類型,如何把QString轉換為char呢?下面的代碼就可以實現。

QString copycommand = ...;
const char *c_copycommand = copycommand.toAscii().constData();

posted @ 2012-03-29 14:03 米米 閱讀(1375) | 評論 (1)編輯 收藏

可以使不想要的按鈕消失掉,但是frame的框框還存在。

setWindowFlags(windowFlags() &~ Qt::WindowMinMaxButtonsHint);

setWindowFlags(windowFlags() &~ Qt::WindowCloseButtonHint);   //Qt::WindowCloseButtonHint其實是一個值 0x00080000

       這里的“&~”是取反以后再按位與的意思,下面的“|”是按位或的意思。

       但是如果都不想要的時候,一起使用的時候就無效了。

setWindowFlags(windowFlags() &~ (Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint));

       偶然間發現了一個問題,我感覺是個bug,就是如果固定窗口的大小,哪么這個全部都屏蔽掉的方案就成功了。

setFixedSize(679, 423);

posted @ 2012-03-29 14:02 米米 閱讀(1736) | 評論 (0)編輯 收藏

設置窗口居中顯示

方法一:在窗口(QWidget類及派生類)的構造函數中添加如下代碼:

#include <QDesktopWidget>

//.......
QDesktopWidget* desktop = QApplication::desktop(); // =qApp->desktop();也可以
move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);
//.......

重新編譯后,該窗口啟動時在屏幕居中的位置。

方法二:在調用show()函數后調用move()函數,j將窗口移動到屏幕中央。

#include <QDesktopWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    w.move ((QApplication::desktop()->width() - w.width())/2,(QApplication::desktop()->height() - w.height())/2);
    return a.exec();
}

posted @ 2012-03-29 13:52 米米 閱讀(1515) | 評論 (0)編輯 收藏

僅列出標題
共8頁: 1 2 3 4 5 6 7 8 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区国产精品| 欧美日本国产| 亚洲巨乳在线| 最新69国产成人精品视频免费| 久久av在线看| 麻豆精品精华液| 亚洲国产精品久久| 99精品免费网| 亚洲欧美日韩综合一区| 久久亚洲高清| 国产精品毛片高清在线完整版| 国产一二精品视频| 欧美一区二区日韩| 欧美1级日本1级| 久久天堂精品| 亚洲国产精品t66y| 亚洲在线日韩| 蜜桃av一区二区| 欧美性事在线| …久久精品99久久香蕉国产| 亚洲亚洲精品三区日韩精品在线视频 | 欧美精品亚洲精品| 国产精品一级二级三级| 在线观看一区视频| 亚洲制服少妇| 亚洲大片在线观看| 亚洲女性裸体视频| 欧美精品一区在线| 精品成人一区二区三区| 亚洲欧美日韩国产一区二区| 欧美激情一区二区三区蜜桃视频 | 国语自产精品视频在线看| 夜夜嗨av一区二区三区网页| 久久香蕉精品| 午夜久久影院| 国产精品视频自拍| 亚洲午夜一区| 亚洲剧情一区二区| 免费永久网站黄欧美| 精品成人一区二区三区| 久久精品国产视频| 先锋影音久久| 国产欧美日本在线| 亚洲欧美另类在线| 中文亚洲视频在线| 国产精品成人一区二区| 亚洲专区一区二区三区| 日韩天天综合| 欧美日韩另类在线| 亚洲午夜久久久| 一本一本久久a久久精品综合妖精| 欧美日韩国产成人在线91| 99精品久久久| 一本色道久久99精品综合| 欧美午夜宅男影院在线观看| 亚洲一区二区三区777| 在线中文字幕一区| 国产精品久久久久高潮| 午夜国产欧美理论在线播放| 亚洲视频一区| 国产免费成人av| 久久久精品一品道一区| 久久精品女人的天堂av| 亚洲国产欧美日韩精品| 亚洲国产欧美一区| 欧美日韩成人综合在线一区二区| 亚洲日韩欧美视频一区| 国产精品久久激情| 日韩亚洲视频| 99av国产精品欲麻豆| 欧美小视频在线| 小嫩嫩精品导航| 久久精品99无色码中文字幕| 影音先锋亚洲一区| 亚洲日本成人| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美日韩精品三区| 午夜国产一区| 久久亚洲精品中文字幕冲田杏梨 | 国产视频观看一区| 久久婷婷影院| 欧美精品福利在线| 久久国产色av| 欧美二区在线看| 欧美一区成人| 欧美1区2区3区| 亚洲欧美变态国产另类| 久久免费视频网站| 亚洲欧美国产精品专区久久| 久久影院午夜论| 亚洲一区精品电影| 可以免费看不卡的av网站| 亚洲在线中文字幕| 麻豆精品视频| 久久久夜色精品亚洲| 欧美日韩精品一二三区| 久久亚洲二区| 国产精品久久久久一区二区| 欧美不卡高清| 国产片一区二区| 亚洲最新在线| 亚洲人成亚洲人成在线观看图片| 亚洲专区国产精品| 在线视频精品一区| 老司机午夜精品视频在线观看| 午夜国产欧美理论在线播放| 欧美激情综合五月色丁香| 久久综合中文字幕| 国产欧美日韩综合精品二区| 99精品欧美一区| 日韩午夜免费视频| 久久综合网络一区二区| 性欧美video另类hd性玩具| 免费在线观看成人av| 久久综合色婷婷| 国产视频精品xxxx| 亚洲免费影视第一页| 亚洲一区二三| 欧美日韩亚洲另类| 亚洲精品一区二区三区福利| 亚洲精品美女91| 免费成人高清视频| 欧美mv日韩mv国产网站app| 国产亚洲欧美日韩精品| 午夜天堂精品久久久久| 久久中文久久字幕| 久久夜色精品| 国产精品久久久999| 亚洲另类一区二区| 亚洲毛片在线看| 免费的成人av| 亚洲第一视频网站| 亚洲三级免费观看| 欧美jizz19hd性欧美| 亚洲高清一区二| 亚洲美女区一区| 欧美日韩精品福利| 一本久久青青| 午夜精品福利一区二区三区av | 日韩西西人体444www| 夜夜嗨av一区二区三区中文字幕| 美日韩精品视频| 亚洲另类自拍| 亚洲欧美中文字幕| 国产在线观看91精品一区| 久久超碰97中文字幕| 麻豆精品网站| 夜夜嗨av色综合久久久综合网| 欧美日韩亚洲激情| 亚洲影视在线播放| 久久偷窥视频| 亚洲美洲欧洲综合国产一区| 欧美网站在线| 久久av一区二区三区| 亚洲激情小视频| 午夜亚洲福利在线老司机| 国内视频一区| 欧美激情一区二区三区四区| 在线亚洲一区| 鲁大师成人一区二区三区| 亚洲美女av网站| 国产性猛交xxxx免费看久久| 欧美不卡视频| 亚洲欧美日韩国产一区二区三区| 久久综合九色综合欧美狠狠| 一本色道久久综合狠狠躁篇怎么玩 | 欧美日韩国产三区| 亚洲在线视频一区| 欧美激情2020午夜免费观看| 中文网丁香综合网| 黄色影院成人| 国产精品久久久免费| 麻豆av一区二区三区久久| 亚洲美女av在线播放| 久久国产成人| 亚洲性人人天天夜夜摸| 精品电影在线观看| 国产精品久久午夜夜伦鲁鲁| 美女性感视频久久久| 午夜亚洲福利| 一区二区三区四区蜜桃| 欧美电影电视剧在线观看| 欧美亚洲三区| 一区二区三区精品| 亚洲承认在线| 国内外成人免费视频| 欧美日韩美女在线| 美女黄色成人网| 国产一区二区成人| 国语精品中文字幕| 欧美日韩1区2区| 裸体素人女欧美日韩| 亚洲欧美精品| 一区二区三区视频免费在线观看| 亚洲国产日本| 欧美大片va欧美在线播放| 久久视频在线免费观看| 欧美专区日韩专区| 西西裸体人体做爰大胆久久久| 99热这里只有精品8|