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

金喜正规买球

Qt網格組件QtitanDataGrid教程:如何使用添加新行功能

轉帖|使用教程|編輯:鮑佳佳|2021-09-06 11:04:40.607|閱讀 214 次

概述:該示例演示了用戶如何向網格輸入新行。新行可以位于視圖的頂部或底部。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

QtitanDataGrid 是一個用于 Qt 的商業 DataGrid 組件,它為向最終用戶呈現表格數據提供了真正非凡的可能性。組件吸收了用于顯示表格的用戶界面構造領域的所有現代成就。目前,是 Qt 市場上唯一具有如此令人印象深刻的高級功能和出色性能的網格組件。(查看詳情)

QtitanDataGrid使你能夠從不同的來源加載各種類型的數據到一個快速、靈活和功能性的可編輯網格中,支持排序、分組、報告、創建帶狀列、按鈕的拖放和大量其他方便的功能。這個數據網格幫助具有Delphi和C++背景的新手和經驗豐富的Qt開發者使用同樣全面的高級可編輯網格功能,他們已經習慣了在相應的IDE中使用這些功能,而這些功能并不是標準Qt庫的一部分。

下載QtitanDataGrid最新版

該示例展示了如何使用添加新行功能。

該示例演示了用戶如何向網格輸入新行。新行可以位于視圖的頂部或底部。





AddingNewRowFeature/AddingNewRowFeature.pro



TEMPLATE = app

TARGET = "Grid_"$$member(TARGET, 0)

QTITANDIR = $$quote($$(QTITANDIR))
isEmpty(QTITANDIR):QTITANDIR = $$quote($$PWD/../../../)
include($$QTITANDIR/src/shared/qtitangrid.pri)

DESTDIR = $$QTITANDIR/bin
DESTDIR = $$member(DESTDIR, 0)$$QTITAN_LIB_PREFIX
DESTDIR = "$$DESTDIR"

android:ANDROID_PACKAGE_SOURCE_DIR=$$PWD/../../SQLFiles

!debug_and_release|build_pass {
    CONFIG(debug, debug|release) {
        TARGET = $$member(TARGET, 0)d
    }
}

HEADERS      += window.h

SOURCES      += main.cpp \
                window.cpp

include($$PWD/../../shared/DemoMainWindow.pri)

QT += widgets sql xml

macx {
    CONFIG-=app_bundle
}

QMAKE_CXXFLAGS -= FS
AddingNewRowFeature/AddingNewRowFeature.py



import sys, os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../../shared")

from PySide2 import QtCore
from PySide2.QtCore import Qt, SIGNAL, SLOT, QTimer
from PySide2.QtGui import QPixmap
from PySide2.QtWidgets import (QWidget, QApplication, QVBoxLayout, QHBoxLayout, QPushButton,
                               QSlider, QLabel, QCheckBox, QComboBox, QMessageBox)
from PySide2.QtSql import QSqlDatabase, QSqlError, QSqlTableModel

from DevMachines import QtitanBase
from DevMachines.QtitanBase import Qtitan
from DevMachines.QtitanGrid import (getGridVersion, Grid, DBGrid, GridColumn, GridEditor,
                                    CellButtonClickEventArgs, ContextMenuEventArgs,
                                    EditorValidationEventArgs)

from DemoMainWindow import DemoMainWindow

class Window(DemoMainWindow):
    def __init__(self):
        DemoMainWindow.__init__(self, "QtitanDataGrid", getGridVersion())
        self.setWindowTitle(self.tr("Adding row to the grid possibility"))
        self.setGeometry(150, 150, 1000, 800)

        Grid.loadTranslation()

        self.grid = DBGrid()

        prefix = os.path.dirname(os.path.realpath(__file__))
        prefix += "/../../SQLFiles/assets"

        db = QSqlDatabase.addDatabase("QSQLITE", "database_demo")

        db.setDatabaseName(prefix + "/database.sqlite")
        db.setHostName("")
        db.setPort(-1)
        if not db.open("", ""):
            err = db.lastError()
            QSqlDatabase.removeDatabase("database_demo")
            QMessageBox.critical(self, "Demo Error", "Error: Can't open database " + db.databaseName() + ", error - " + err.text())
            QApplication.exit(1)
            return

        model = QSqlTableModel(self.grid, db)
        model.setTable("data")
        model.select()
        if model.lastError().type() != QSqlError.NoError:
            QMessageBox.critical(0, "Demo Error", "Error: SQL data base is not valid.")
            QApplication.exit(1)
            return

        model.setEditStrategy(QSqlTableModel.OnFieldChange)

        # Configure grid view
        self.grid.setViewType(Grid.BandedTableView)
        view = self.grid.view()
        view.options().setBandsHeader(False)
        view.options().setColumnAutoWidth(True)
        view.options().setRowAutoHeight(True)
        view.options().setNewRowPlace(Qtitan.AtBeginning)
        view.options().setNewRowHighlightEffect(Qtitan.AlphaEffect)

        # Connect Grid's context menu handler.
        self.connect(view, SIGNAL("contextMenu(ContextMenuEventArgs*)"), self,
                SLOT("contextMenu(ContextMenuEventArgs*)"))

        characteristicsBand = view.addBand("Characteristics")
        engineeringBand = view.addBand("Engineering")
        view.setModel(model)

        column = view.getColumnByModelColumnName("Photo")
        column = view.getColumnByModelColumnName("Registration")
        column.setBandIndex(characteristicsBand.index())
        column = view.getColumnByModelColumnName("Aircraft")
        column.setBandIndex(characteristicsBand.index())
        column = view.getColumnByModelColumnName("Location")
        column.setBandIndex(characteristicsBand.index())
        column.setRowIndex(1)
        column = view.getColumnByModelColumnName("Date")
        column.setBandIndex(characteristicsBand.index())
        column.setRowIndex(2)
        # Add cell button to the column.
        column.addButton(GridColumn.ClearButtonIcon, Qtitan.AtEnd, GridColumn.MouseOverPolicy)
        self.connect(column, SIGNAL("buttonClicked(CellButtonClickEventArgs*)"), self,
                    SLOT("cellButtonClicked(CellButtonClickEventArgs*)"))

        column = view.getColumnByModelColumnName("Photo")
        column.setEditorType(GridEditor.Picture)
        pictureEditor = column.editorRepository()

        column.setBandIndex(engineeringBand.index())
        column.setRowSpan(3)

        column = view.getColumnByModelColumnName("History")
        column.setEditorType(GridEditor.Memo)
        column.setBandIndex(engineeringBand.index())
        column.setRowSpan(3)

        # Add cell button to the column.
        column.addButton(GridColumn.ChoiceButtonIcon, Qtitan.AtEnd)
        self.connect(column, SIGNAL("buttonClicked(CellButtonClickEventArgs*)"), self,
                SLOT("cellButtonClicked(CellButtonClickEventArgs*)"))

        column = view.getColumnByModelColumnName("Info")
        column.setEditorType(GridEditor.Memo)
        column.setBandIndex(engineeringBand.index())
        column.setRowSpan(3)

        # Add cell button to the column.
        column.addButton(GridColumn.ChoiceButtonIcon, Qtitan.AtEnd)
        self.connect(column, SIGNAL("buttonClicked(CellButtonClickEventArgs*)"), self,
                SLOT("cellButtonClicked(CellButtonClickEventArgs*)"))

        # Show button menu for all column headers.
        for i in range(0, view.getColumnCount()):
            view.getColumn(i).setMenuButtonVisible(True)

        self.setDemoWidget(self.grid, self.createSettingsWidget())
        view.bestFit()

    def createSettingsWidget(self):
        settings = QWidget(self)
        l = QVBoxLayout(settings)
        placeLabel = QLabel(settings)
        placeLabel.setText(self.tr("Row pane place:"))
        newRowPosition = QComboBox(settings)
        newRowPosition.addItem("Top")
        newRowPosition.addItem("Bottom")
        newRowPosition.addItem("Hide")
        self.connect(newRowPosition, SIGNAL("activated(int)"), self, SLOT("newRowPositionActivated(int)"))
        placeLabel.setBuddy(newRowPosition)
        hl = QHBoxLayout()
        hl.addWidget(placeLabel)
        hl.addWidget(newRowPosition)
        l.addLayout(hl)

        effectLabel = QLabel(settings)
        effectLabel.setText(self.tr("Highlight effect:"))
        newRowEffect = QComboBox(settings)
        newRowEffect.addItem("Flash")
        newRowEffect.addItem("Alpha")
        self.connect(newRowEffect, SIGNAL("activated(int)"), self, SLOT("newRowEffectActivated(int)"))
        effectLabel.setBuddy(newRowEffect)
        hl = QHBoxLayout()
        hl.addWidget(effectLabel)
        hl.addWidget(newRowEffect)
        l.addLayout(hl)

        fastScrollCheck = QCheckBox(settings)
        fastScrollCheck.setText(self.tr("Fast scroll effect"))
        self.connect(fastScrollCheck, SIGNAL("stateChanged(int)"), self, SLOT("fastScrollChanged(int)"))
        l.addWidget(fastScrollCheck)
        fastScrollCheck.setChecked(True)

        dottedLineCheck = QCheckBox(settings)
        dottedLineCheck.setText(self.tr("Dotted grid line"))
        self.connect(dottedLineCheck, SIGNAL("stateChanged(int)"), self, SLOT("dottedLineChanged(int)"))
        l.addWidget(dottedLineCheck)
        dottedLineCheck.setChecked(True)

        label = QLabel(self)
        hl = QHBoxLayout()
        label.setText(self.tr("Grid line style:"))
        lineStylesSelect = QComboBox(settings)
        lineStylesSelect.addItem("None")
        lineStylesSelect.addItem("Both")
        lineStylesSelect.addItem("Both2D")
        lineStylesSelect.addItem("Horizontal")
        lineStylesSelect.addItem("Horizontal2D")
        lineStylesSelect.addItem("Vertical")
        lineStylesSelect.addItem("Vertical2D")
        self.connect(lineStylesSelect, SIGNAL("currentIndexChanged(int)"),
            self, SLOT("selectGridLineStyles(int)"))
        hl.addWidget(label)
        hl.addWidget(lineStylesSelect)
        l.addLayout(hl)
        lineStylesSelect.setCurrentIndex(2)

        zoomEnable = QCheckBox(settings)
        zoomEnable.setText(self.tr("Zoom enabled"))
        zoomEnable.setChecked(True)
        self.connect(zoomEnable, SIGNAL("stateChanged(int)"), self, SLOT("zoomEnabledChanged(int)"))
        l.addWidget(zoomEnable)

        zoomIndicator = QCheckBox(settings)
        zoomIndicator.setText(self.tr("Show zoom indicator"))
        zoomIndicator.setChecked(True)
        self.connect(zoomIndicator, SIGNAL("stateChanged(int)"), self, SLOT("zoomIndicatorChanged(int)"))
        l.addWidget(zoomIndicator)

        zoomSlider = QSlider(settings)
        zoomSlider.setOrientation(Qt.Horizontal)
        zoomSlider.setTickPosition(QSlider.TicksBothSides)
        zoomSlider.setMinimum(25)
        zoomSlider.setMaximum(300)
        zoomSlider.setTickInterval(25)
        zoomSlider.setSingleStep(25)
        zoomSlider.setValue(100)
        self.connect(zoomSlider, SIGNAL("sliderMoved(int)"), self, SLOT("zoomValueChanged(int)"))
        self.connect(self.grid.view(), SIGNAL("zoomChanged(int)"), zoomSlider, SLOT("setValue(int)"))
        l.addWidget(zoomSlider)

        airCheckBox = QCheckBox(settings)
        airCheckBox.setText(self.tr("Windows Air Support"))
        self.connect(airCheckBox, SIGNAL("stateChanged(int)"), self, SLOT("WindowsAirSupportChanged(int)"))
        airCheckBox.setChecked(False)
        l.addWidget(airCheckBox)

        cellAutoRaise = QCheckBox(settings)
        cellAutoRaise.setText(self.tr("Auto raise cell button"))
        self.connect(cellAutoRaise, SIGNAL("stateChanged(int)"), self, SLOT("cellButtonAutoRaiseEnabled(int)"))
        cellAutoRaise.setChecked(True)
        l.addWidget(cellAutoRaise)

        frozenRowsBox = QCheckBox(settings)
        frozenRowsBox.setText(self.tr("Frozen Rows"))
        self.connect(frozenRowsBox, SIGNAL("stateChanged(int)"), self, SLOT("frozenRowsEnabled(int)"))
        frozenRowsBox.setChecked(True)
        l.addWidget(frozenRowsBox)

        transparentBox = QCheckBox(settings)
        transparentBox.setText(self.tr("Transparent Background"))
        self.connect(transparentBox, SIGNAL("stateChanged(int)"), self, SLOT("transparentBackgroundEnabled(int)"))
        transparentBox.setChecked(False)
        l.addWidget(transparentBox)

        printButton = QPushButton(settings)
        printButton.setText(self.tr("Print Preview"))
        self.connect(printButton, SIGNAL("clicked()"), self, SLOT("printPreview()"))
        l.addWidget(printButton)
        return settings

    @QtCore.Slot(int)
    def newRowPositionActivated(self, index):
        view = self.grid.view()
        if index == 0:
            view.options().setNewRowPlace(Qtitan.AtBeginning)
        elif index == 1:
            view.options().setNewRowPlace(Qtitan.AtEnd)
        elif index == 2:
            view.options().setNewRowPlace(Qtitan.AtNone)

    @QtCore.Slot(int)
    def newRowEffectActivated(self, index):
        view = self.grid.view()
        if index == 0:
            view.options().setNewRowHighlightEffect(Qtitan.FlashEffect)
        else:
            view.options().setNewRowHighlightEffect(Qtitan.AlphaEffect)

    @QtCore.Slot(int)
    def fastScrollChanged(self, state):
        view = self.grid.view()
        view.options().setFastScrollEffect(state == Qt.Checked)

    @QtCore.Slot(int)
    def dottedLineChanged(self, state):
        view = self.grid.view()
        pen = view.options().gridLinePen()
        if state == Qt.Checked:
            pen.setStyle(Qt.DotLine)
        else:
            pen.setStyle(Qt.SolidLine)
        view.options().setGridLinePen(pen)

    @QtCore.Slot(int)
    def selectGridLineStyles(self, index):
        view = self.grid.view()
        if index == 0:
            view.options().setGridLines(Qtitan.LinesNone)
        elif index == 1:
            view.options().setGridLines(Qtitan.LinesBoth)
        elif index == 2:
            view.options().setGridLines(Qtitan.LinesBoth2D)
        elif index == 3:
            view.options().setGridLines(Qtitan.LinesHorizontal)
        elif index == 4:
            view.options().setGridLines(Qtitan.LinesHorizontal2D)
        elif index == 5:
            view.options().setGridLines(Qtitan.LinesVertical)
        elif index == 6:
            view.options().setGridLines(Qtitan.LinesVertical2D)
        else:
            view.options().setGridLines(Qtitan.LinesBoth)

    @QtCore.Slot(int)
    def zoomEnabledChanged(self, state):
        view = self.grid.view()
        view.options().setZoomEnabled(state == Qt.Checked)

    @QtCore.Slot(int)
    def zoomIndicatorChanged(self, state):
        view = self.grid.view()
        view.options().setZoomIndicatorActive(state == Qt.Checked)

    @QtCore.Slot(int)
    def zoomValueChanged(self, value):
        factor = (float(value) / 25) * 25
        view = self.grid.view()
        view.options().setZoomFactor(factor / 100)

    @QtCore.Slot(int)
    def WindowsAirSupportChanged(self, state):
        view = self.grid.view()
        view.options().setWindowsAirSupported(state == Qt.Checked)

    @QtCore.Slot(int)
    def cellButtonAutoRaiseEnabled(self, state):
        view = self.grid.view()
        view.options().setCellButtonAutoRaise(state == Qt.Checked)

    @QtCore.Slot(int)
    def frozenRowsEnabled(self, state):
        view = self.grid.view()
        view.options().setRowFrozenButtonVisible(state == Qt.Checked)
        view.options().setFrozenPlaceQuickSelection(state == Qt.Checked)

    @QtCore.Slot(int)
    def transparentBackgroundEnabled(self, state):
        view = self.grid.view()
        view.options().setTransparentBackground(state == Qt.Checked)
        view.options().setAlternatingRowColors(not view.options().alternatingRowColors())

    @QtCore.Slot(ContextMenuEventArgs)
    def contextMenu(self, args):
        args.contextMenu().addAction("Print Preview", self, SLOT("printPreview()"))
        args.contextMenu().addSeparator()
        args.contextMenu().addAction("Developer Machines on the Web", self, SLOT("showCompanyWebSite()"))

    @QtCore.Slot(CellButtonClickEventArgs)
    def cellButtonClicked(self, args):
        QMessageBox.information(self, "Cell button clicked",
            "Clicked: Button - " + str(args.buttonIndex()) + ", Column Title - " + args.column().caption() + ", RowIndex - " + str(args.row().rowIndex()))

    @QtCore.Slot()
    def printPreview(self):
        self.grid.view().printPreview()

    def setShadeColor(self, color):
        self.grid.themeManager().setShadeColor(color)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())
AddingNewRowFeature/main.cpp



#include <QApplication>

#include "window.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Window window;
    window.show();
    return app.exec();
}
.cpp



Home Tech Support
Developer Machines
QtitanComponents Documentation

Index All Classes Examples And Tutorials
AddingNewRowFeature Example
#include <QtGui>
#include <QDirModel>
#include <QtSql>
#include <QMessageBox>

#include "window.h"

Window::Window()
: DemoMainWindow(QStringLiteral("QtitanDataGrid"), QStringLiteral(QTN_VERSION_DATAGRID_STR), tr("Adding New Row to the grid possibility example"))
{
    Grid::loadTranslation();

    m_grid = new Qtitan::DBGrid(this);

#ifndef Q_OS_ANDROID
    QString path = QApplication::applicationDirPath();
    path += QStringLiteral("/../examples/SQLFiles/assets");
#else
    QString path = QDir::homePath();
    copyAssetFile(path, "database.sqlite");
#endif

    QSqlDatabase db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), QStringLiteral("database_demo"));
    db.setDatabaseName(path + QStringLiteral("/database.sqlite"));
    db.setHostName(QString());
    db.setPort(-1);
    if (!db.open(QString(), QString()))
    {
        QSqlError err = db.lastError();
        QSqlDatabase::removeDatabase(tr("database_demo"));
        QMessageBox::critical(0, tr("SQL Error"), tr("Error: Can't open database - %1, error - %2").arg(db.databaseName()).arg(err.text()));
        QApplication::exit(1);
        return;
    }

    QSqlTableModel* model = new QSqlTableModel(m_grid, db);
    model->setTable(QStringLiteral("data"));
    model->select();
    if (model->lastError().type() != QSqlError::NoError)
    {
        QMessageBox::critical(0, tr("SQL Error"), tr("Error: SQL data base is not valid."));
        QApplication::exit(1);
        return;
    }
    model->setEditStrategy(QSqlTableModel::OnFieldChange);

    // Configure grid view
    m_grid->setViewType(Qtitan::Grid::BandedTableView);
    Qtitan::GridBandedTableView* view = m_grid->view<Qtitan::GridBandedTableView>();
    view->options().setBandsHeader(false);
    view->options().setColumnAutoWidth(true);
    view->options().setRowAutoHeight(true);
    view->options().setNewRowPlace(Qtitan::AtBeginning);
    view->options().setNewRowHighlightEffect(Qtitan::AlphaEffect);
    view->options().setSupportedDropActions(Qt::CopyAction);
    view->options().setModelItemsDragEnabled(true);

    //Connect Grid's context menu handler.
    connect(view, SIGNAL(contextMenu(ContextMenuEventArgs*)), this, SLOT(contextMenu(ContextMenuEventArgs* )));

    Qtitan::GridTableBand* characteristicsBand = view->addBand(tr("Characteristics"));
    Qtitan::GridTableBand* engineeringBand = view->addBand(tr("Engineering"));
    view->setModel(model);

    Qtitan::GridBandedTableColumn* column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Photo"));
    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Registration"));
    column->setBandIndex(characteristicsBand->index());
    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Aircraft"));
    column->setBandIndex(characteristicsBand->index());
    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Location"));
    column->setBandIndex(characteristicsBand->index());
    column->setRowIndex(1);
    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Date"));
    column->setBandIndex(characteristicsBand->index());
    column->setRowIndex(2);
    //Add cell button to the column.
    column->addButton(GridColumn::ClearButtonIcon, Qtitan::AtEnd, GridColumn::MouseOverPolicy);
    connect(column, SIGNAL(buttonClicked(CellButtonClickEventArgs*)), this, SLOT(cellButtonClicked(CellButtonClickEventArgs*)));

    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Photo"));
    column->setEditorType(GridEditor::Picture);
    Qtitan::GridPictureEditorRepository* pictureEditor = (Qtitan::GridPictureEditorRepository *)column->editorRepository();
    Q_UNUSED(pictureEditor);
    column->setBandIndex(engineeringBand->index());
    column->setRowSpan(3);

    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("History"));
    column->setEditorType(GridEditor::Memo);
    column->setBandIndex(engineeringBand->index());
    column->setRowSpan(3);
    //Add cell button to the column.
    column->addButton(GridColumn::ChoiceButtonIcon, Qtitan::AtEnd);
    connect(column, SIGNAL(buttonClicked(CellButtonClickEventArgs*)), this, SLOT(cellButtonClicked(CellButtonClickEventArgs*)));

    column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Info"));
    column->setEditorType(GridEditor::Memo);
    column->setBandIndex(engineeringBand->index());
    column->setRowSpan(3);
    //Add cell button to the column.
    column->addButton(GridColumn::ChoiceButtonIcon, Qtitan::AtEnd);
    connect(column, SIGNAL(buttonClicked(CellButtonClickEventArgs*)), this, SLOT(cellButtonClicked(CellButtonClickEventArgs*)));

    //Show button menu for all column headers.
    for (int i = 0; i < view->getColumnCount(); ++i)
        static_cast<GridTableColumn *>(view->getColumn(i))->setMenuButtonVisible(true);

    setDemoWidget(m_grid, createSettingsWidget());

    view->bestFit();
}

QWidget* Window::createSettingsWidget()
{
    QWidget* settings = new QWidget(this);
    QVBoxLayout* l = new QVBoxLayout(settings);

    QCheckBox* checkBox = new QCheckBox(settings);
    checkBox->setText(tr("Show Resize Content (new)"));
    connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(showResizeContentChanged(int)));
    checkBox->setChecked(true);
    l->addWidget(checkBox);

    QLabel* placeLabel = new QLabel(settings);
    placeLabel->setText(tr("New Row pane place:"));
    QComboBox* newRowPosition = new QComboBox(settings);
    newRowPosition->addItem(tr("Top"));
    newRowPosition->addItem(tr("Bottom"));
    newRowPosition->addItem(tr("Hide"));
    connect(newRowPosition, SIGNAL(activated(int)), this, SLOT(newRowPositionActivated(int)));
    placeLabel->setBuddy(newRowPosition);
    QHBoxLayout* hl = new QHBoxLayout(0);
    hl->addWidget(placeLabel);
    hl->addWidget(newRowPosition);
    l->addLayout(hl);

    QLabel* effectLabel = new QLabel(settings);
    effectLabel->setText(tr("Highlight effect:"));
    QComboBox* newRowEffect = new QComboBox(settings);
    newRowEffect->addItem(tr("Flash"));
    newRowEffect->addItem(tr("Alpha"));
    connect(newRowEffect, SIGNAL(activated(int)), this, SLOT(newRowEffectActivated(int)));
    effectLabel->setBuddy(newRowEffect);
    hl = new QHBoxLayout(0);
    hl->addWidget(effectLabel);
    hl->addWidget(newRowEffect);
    l->addLayout(hl);

    QCheckBox* fastScrollCheck = new QCheckBox(settings);
    fastScrollCheck->setText(tr("Fast scroll effect"));
    connect(fastScrollCheck, SIGNAL(stateChanged(int)), this, SLOT(fastScrollChanged(int)));
    l->addWidget(fastScrollCheck);
    fastScrollCheck->setChecked(true);

    QCheckBox* dottedLineCheck = new QCheckBox(settings);
    dottedLineCheck->setText(tr("Dotted grid line"));
    connect(dottedLineCheck, SIGNAL(stateChanged(int)), this, SLOT(dottedLineChanged(int)));
    l->addWidget(dottedLineCheck);
    dottedLineCheck->setChecked(true);

    QLabel* label = new QLabel(this);
    hl = new QHBoxLayout(0);
    label->setText(tr("Grid line style:"));
    QComboBox* lineStylesSelect = new QComboBox(settings);
    lineStylesSelect->addItem(tr("None"));
    lineStylesSelect->addItem(tr("Both"));
    lineStylesSelect->addItem(tr("Both2D"));
    lineStylesSelect->addItem(tr("Horizontal"));
    lineStylesSelect->addItem(tr("Horizontal2D"));
    lineStylesSelect->addItem(tr("Vertical"));
    lineStylesSelect->addItem(tr("Vertical2D"));
    connect(lineStylesSelect, SIGNAL(currentIndexChanged(int)), this, SLOT(selectGridLineStyles(int)));
    hl->addWidget(label);
    hl->addWidget(lineStylesSelect);
    l->addLayout(hl);
    lineStylesSelect->setCurrentIndex(2);

    QCheckBox* zoomEnable = new QCheckBox(settings);
    zoomEnable->setText(tr("Zoom enabled"));
    zoomEnable->setChecked(true);
    connect(zoomEnable, SIGNAL(stateChanged(int)), this, SLOT(zoomEnabledChanged(int)));
    l->addWidget(zoomEnable);

    QCheckBox* zoomIndicator = new QCheckBox(settings);
    zoomIndicator->setText(tr("Show zoom indicator"));
    zoomIndicator->setChecked(true);
    connect(zoomIndicator, SIGNAL(stateChanged(int)), this, SLOT(zoomIndicatorChanged(int)));
    l->addWidget(zoomIndicator);

    QSlider* zoomSlider = new QSlider(settings);
    zoomSlider->setOrientation(Qt::Horizontal);
    zoomSlider->setTickPosition(QSlider::TicksBothSides);
    zoomSlider->setMinimum(25);
    zoomSlider->setMaximum(300);
    zoomSlider->setTickInterval(25);
    zoomSlider->setSingleStep(25);
    zoomSlider->setValue(100);
    connect(zoomSlider, SIGNAL(sliderMoved(int)), this, SLOT(zoomValueChanged(int)));
    connect(m_grid->view<Qtitan::GridTableView>(), SIGNAL(zoomChanged(int)), zoomSlider, SLOT(setValue(int)));
    l->addWidget(zoomSlider);

    QCheckBox* cellAutoRaise = new QCheckBox(settings);
    cellAutoRaise->setText(tr("Auto raise cell button"));
    connect(cellAutoRaise, SIGNAL(stateChanged(int)), this, SLOT(cellButtonAutoRaiseEnabled(int)));
    cellAutoRaise->setChecked(true);
    l->addWidget(cellAutoRaise);

    QCheckBox* frozenRowsBox = new QCheckBox(settings);
    frozenRowsBox->setText(tr("Frozen Rows"));
    connect(frozenRowsBox, SIGNAL(stateChanged(int)), this, SLOT(frozenRowsEnabled(int)));
    frozenRowsBox->setChecked(true);
    l->addWidget(frozenRowsBox);

    QCheckBox* transparentBox = new QCheckBox(settings);
    transparentBox->setText(tr("Transparent Background"));
    connect(transparentBox, SIGNAL(stateChanged(int)), this, SLOT(transparentBackgroundEnabled(int)));
    transparentBox->setChecked(false);
    l->addWidget(transparentBox);

    QCheckBox* rowSizingBox = new QCheckBox(settings);
    rowSizingBox->setText(tr("Resizing row (new)"));
    connect(rowSizingBox, SIGNAL(stateChanged(int)), this, SLOT(rowSizingEnabled(int)));
    rowSizingBox->setChecked(false);
    l->addWidget(rowSizingBox);

    QPushButton* printButton = new QPushButton(settings);
    printButton->setText(tr("Print Preview"));
    connect(printButton, SIGNAL(clicked()), this, SLOT(printPreview()));
    l->addWidget(printButton);
    return settings;
}

void Window::newRowPositionActivated(int index)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();

    switch (index)
    {
    case 0:
        view->options().setNewRowPlace(Qtitan::AtBeginning);
        break;
    case 1:
        view->options().setNewRowPlace(Qtitan::AtEnd);
        break;
    default:
        view->options().setNewRowPlace(Qtitan::AtNone);
    }
}

void Window::newRowEffectActivated(int index)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();

    switch (index)
    {
    case 0:
        view->options().setNewRowHighlightEffect(Qtitan::FlashEffect);
        break;
    case 1:
        view->options().setNewRowHighlightEffect(Qtitan::AlphaEffect);
        break;
    default:
        view->options().setNewRowHighlightEffect(Qtitan::AlphaEffect);
    }
}

void Window::fastScrollChanged(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setFastScrollEffect(state == Qt::Checked);
}

void Window::dottedLineChanged(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    QPen pen = view->options().gridLinePen();
    pen.setStyle(state == Qt::Checked ? Qt::DotLine : Qt::SolidLine);
    view->options().setGridLinePen(pen);
}

void Window::selectGridLineStyles(int index)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    switch (index)
    {
    case 0:
        view->options().setGridLines(Qtitan::LinesNone);
        break;
    case 1:
        view->options().setGridLines(Qtitan::LinesBoth);
        break;
    case 2:
        view->options().setGridLines(Qtitan::LinesBoth2D);
        break;
    case 3:
        view->options().setGridLines(Qtitan::LinesHorizontal);
        break;
    case 4:
        view->options().setGridLines(Qtitan::LinesHorizontal2D);
        break;
    case 5:
        view->options().setGridLines(Qtitan::LinesVertical);
        break;
    case 6:
        view->options().setGridLines(Qtitan::LinesVertical2D);
        break;
    default:
        view->options().setGridLines(Qtitan::LinesBoth);
    }
 }

void Window::selectViewOrientation(int index)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    switch (index)
    {
    case 0:
        {
            view->options().setViewOrientation(Qt::Vertical);

            Qtitan::GridBandedTableColumn* column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Location"));
            column->setRowIndex(1);
            column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Date"));
            column->setRowIndex(2);
        }
        break;
    case 1:
        {
            view->options().setViewOrientation(Qt::Horizontal);

            Qtitan::GridBandedTableColumn* column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName(tr("Location"));
            column->setRowIndex(0);
            column = (Qtitan::GridBandedTableColumn *)view->getColumnByModelColumnName( tr("Date"));
            column->setRowIndex(0);
        }
        break;
    default:
        break;
    }
}

void Window::zoomEnabledChanged(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setZoomEnabled(state == Qt::Checked);
}

void Window::zoomIndicatorChanged(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setZoomIndicatorActive(state == Qt::Checked);
}

void Window::zoomValueChanged(int value)
{
    double factor = qCeil((double)value / 25) * 25;
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setZoomFactor(factor / 100);
}

void Window::showResizeContentChanged(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setShowResizeContent(state == Qt::Checked);
}

void Window::cellButtonAutoRaiseEnabled(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setCellButtonAutoRaise(state == Qt::Checked);
}

void Window::frozenRowsEnabled(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setRowFrozenButtonVisible(state == Qt::Checked);
    view->options().setFrozenPlaceQuickSelection(state == Qt::Checked);
}

void Window::transparentBackgroundEnabled(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setTransparentBackground(state == Qt::Checked);

    view->options().setAlternatingRowColors(!view->options().alternatingRowColors());
}

void Window::rowSizingEnabled(int state)
{
    Qtitan::GridTableView* view = m_grid->view<Qtitan::GridTableView>();
    view->options().setRowSizingEnabled(state == Qt::Checked);
}

void Window::contextMenu(ContextMenuEventArgs* args)
{
    args->contextMenu()->addAction(tr("Print Preview"), this, SLOT(printPreview()));
    args->contextMenu()->addSeparator();
    args->contextMenu()->addAction(tr("Developer Machines on the Web"), this, SLOT(showCompanyWebSite()));
}

void Window::cellButtonClicked(CellButtonClickEventArgs* args)
{
    QMessageBox::information(this, tr("Cell button clicked"),
        tr("Clicked: Button - %1, Column Title - %2, RowIndex - %3").arg(args->buttonIndex()).arg(args->column()->caption()).arg(args->row().rowIndex()));
}

void Window::printPreview()
{
    m_grid->view<Qtitan::GridTableView>()->printPreview();
}

void Window::setShadeColor(const QColor& color)
{
    m_grid->themeManager()->setShadeColor(color);
}


AddingNewRowFeature/window.h

#ifndef WINDOW_H
#define WINDOW_H

#include <QComboBox>
#include <QLabel>
#include <QCheckBox>
#include <QtitanDBGrid.h>

#include "DemoMainWindow.h"

class Window : public DemoMainWindow
{
    Q_OBJECT
public:
    Window();
    QWidget* createSettingsWidget();
private Q_SLOTS:
    void newRowPositionActivated(int index);
    void newRowEffectActivated(int index);
    void fastScrollChanged(int state);
    void dottedLineChanged(int state);
    void selectGridLineStyles(int index);
    void selectViewOrientation(int index);
    void zoomEnabledChanged(int state);
    void zoomIndicatorChanged(int state);
    void cellButtonAutoRaiseEnabled(int state);
    void frozenRowsEnabled(int state);
    void transparentBackgroundEnabled(int state);
    void rowSizingEnabled(int);
    void contextMenu(ContextMenuEventArgs* args);
    void cellButtonClicked(CellButtonClickEventArgs* args);
    void printPreview();
    void setShadeColor(const QColor& color);
    void zoomValueChanged(int value);
    void showResizeContentChanged(int state);
private:
    Qtitan::DBGrid* m_grid;
};

#endif



標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
中文文字幕文字幕亚洲色 | 俺去啦电影网 | 91精品在线二区 | 片完整片视频在线 | 男女猛烈啪啦啦啦免费 | 日本三级香港三级人妇99 | 国产区一二三区%20第一页 | 国产淫秽性爱视频在线 | 欧美午夜免费观看福利片 | 全网热播最新电影电视剧 | 国产色精品vr一区二区 | 亚洲经典一区 | 国产精品欧美一区二区三区不卡 | 疯狂欧美牲乱大交777 | 亚洲丰满 | 91精品欧| 日韩精品视频 | 人人添逼人人摸人人 | 人摸人人人澡 | 成人午夜视频精品一 | 国产乱码精品一区二区三区四 | 午夜福利在线观看亚洲一区二区 | 97国语精品自产拍在线观看一 | 婷庭九月天综合水蜜桃 | 国产小视频在线高清播放 | 五月天婷婷网亚洲综合在线 | 国产一卡2卡3卡4卡网站免费 | 宅男66lu国产在线观看 | 欧美中文字幕在线视 | 短视频在线下载免费 | 午夜私人影院免费体验区 | 欧美日韩综合不卡在线观看 | 一区二区三区日本在线视频免费 | 337p日本欧洲大胆精品 | 国产一区二区三区四区五区 | 欧美综合自拍中文 | 国产亚洲午夜影视在线观看 | 浓毛老太交欧美老妇 | 中文字幕一区二区三 | 日韩丝袜视频一区二区 | 日韩国产一区二区三区在线 | 窝窝午夜看片七次郎青草视频 | 入口91| 国产精品亚洲精品五月 | 日韩国产欧美精品第二区 | 精品国产福利在线观看 | 国产视频99kai | 五月丁香婷婷综合影院 | 中文字幕亚洲欧美日韩专区 | 欧美一区二区三区日韩精品 | 国产视频高清在线观看 | 国产zzjjzzjj视频 | 精品视频一区二区三三区四区 | 国产真实迷奷系列在线400部 | 欧美日韩国产在线一区 | 日韩高清在线观看一区二区三区 | 欧美蜜桃在线一二三区 | 国产一级特黄大片特爽 | 久青草国产在线视频97 | 日韩欧美第一 | 日韩一区精品五区另类二区 | 欧美日韩一区二区三区四 | 美女扒精光 | 好看的韩国电影 | 日韩一区二区三区免费高清 | 精品国产免费一区二区三区四区 | 日韩日皮在线一区二区 | 日韩欧美视频一区二区 | 9cao在| 日本理论午夜高清中文字幕 | 欧美日韩一区二区 | 亚洲国产自 | 欧美色欧洲免费无线码 | 狂野少女电视剧免费播放 | 中国在线观看免 | 亚洲精品视频区 | 最近中文字幕mv在线视频www | 欧美片巜欲性高 | 国产99对白在线播放 | 一区二区三 | good神马电影伦理午夜 | 女人窝人体色www在线观看 | 国产一区二区在线播 | 国产不卡一区不卡二区不卡三区 | 国产探极品在线观看观看 | 区视频在线 | 成人国产高清在线观看 | 日本aⅴ精品一区二区三区日 | 精品尤物视频 | 色偷偷人人澡人人添老妇人 | 国产高清在线a视频 | 国产91最新欧美在线 | 日本韩国三级 | 产免费一区二区三区视频 | 绝色影视在线观看免费版电视剧 | 国产亚洲sss在线观看 | 免费国产乱码一二三区 | 男人亚洲天堂日日夜夜 | 欧美亚洲一区 | 欧美a∨在线观看 | 日韩欧美一区二区在线精品 | 国产福利精品在线观看 | 自拍伦理视频一区二区三区 | 欧美体内she精视频 日本一本二本三区免费免费高清 | 欧洲亚洲日韩欧美一区二区 | 国产精品蜜桃 | 日本免费高清视频不卡 | 不卡国产视频第一页 | 欧美视频一区二区专区 | 国产玉足脚交极品在线视频 | 亚洲日韩乱码中文字幕 | 欧美图区 | 一区二区欧美 | 日韩一区二区综合精品 | 国产网站一区二 | 亚洲午夜在| 亚洲日本v中文字幕区 | 成人欧美日韩高清不卡 | 国产精品亚洲精品不卡 | 国产一级在线观看 | 91视频直播 | 国产亚洲欧美日韩综合一区二区 | 国产日韩ai换脸在线第一页 | 亚洲v乱码专区国产乱码 | 巜大学生特殊 | 国产经典午夜免费观看 | 欧美影院一区二区 | 国产日韩欧美日韩欧美 | 国产精品盗摄一区二区在线 | 在线观看片免费 | 欧产日产国产水蜜桃 | 中文字幕一区二区三区日韩精品 | 91短视频app官网下载 | 日韩欧美精品综合一区二区三区 | 国产v亚洲v天 | 婷婷开心激情综合五月天 | 欧美日韩成人一区二区三区 | 网友自拍露脸国语对白 | 国产精品亚洲αv | 国产白丝jk学生在线播放 | 国产初高中生真实在线视频 | 91视频在线| 日本高清一区二区三区水蜜桃 | 亚洲精品中文字幕乱码三区 | 五月丁香婷婷综合影院 | 97影院午夜在线影国产 | 黄瓜视频在线播放看片 | 欧美另类国产精品一区二区在线 | 91视频网站免费 | 综合亚洲| 狂野少女电视剧免费播放 | 中文字幕自拍偷拍 | 国产精品偷窥熟女精品视频 | 欧美高清一区三 | 亚洲高清国产一区二区三区电影 | 特级婬片国产高清视频 | 国产精品自产拍 | 日本高清一区二区三区水蜜桃 | 日韩亚洲国产女同二区三区 | 99在线观看 | 中文字幕在线免费 | 成人免费动作大片黄在线 | 黄又色高清视频免费 | 成人勉费视频 | 成年人免费体 | 免费国产一区二区不卡在线 | 99热国产在线手 | 男人本色国产在线综合 | 国产精品自在欧美一区 | 在线观看免费高清 | 精品国产欧美一区二区最新 | 九一国产精品视频 | 亚洲午夜成人精品电影在线观看 | 国产真实乱xxxⅹ视频 | 国产美剧电影之家免费观看高清 | 国产高清在线91福利 | 国产系列在线精品二区 | 天天射天| 日韩午夜理论 | 韩国免费三片在线视频 | 日本乱理伦片在 | 国产亲近乱子伦免费视频 | 国家人类遗传资源共享服务平台 | 日韩激情成 | 国产欧美日韩高清在线不卡 | 日本中文字幕乱码aa高清电影 | 女人精aaa| 国产一级a毛一级a毛视频 | 欧美午夜成人精品视频欧洲欧 | 手机看片高清国产日韩片 | 自拍偷自拍亚洲精品偷一 | 成年人免费视频网站 | 日本人与黑人做爰视频网站 | 国产免费一区二区三区在线看 | 国产精品污www一区二区三区 | 精品色重口色 | 国产高清www免费视频 | 日韩精品视频在线播放 | 精品国产免费第一区 | 国产欧美国日产综合 | 国产精品线在线精品国语 | 国产三区四区五区 | 99视频久 | 国产大道香蕉大在线 | 老熟女乱一区二区三区视频 | 精品免费视在线观看 | 99精品国产兔费观看66 | 性色xxxxhd天美传媒 | 国产欧美日韩综合精品区一区二区 | 欧美一区二区三区在线播放 | 拍拍拍无挡国产精品 | 精品欧美日韩一区二区在线观看 | 国产精品一级在线观看 | 欧美午夜理伦 | 国产区精品视频 | 日韩一区不卡 | 午夜免费一级视频 | 国产在线你懂 | 最近中文字幕在线中文视频 | 免费黃色三級片在线观看18 | 菠萝蜜视频在线观看入 | 欧美日韩国产高清精卡 | 亚洲日韩在线中文字幕第一页 | 日韩精品欧美亚洲高清有无 | 97干视频| 99相伴健康一生 | 精品亚洲不卡一区二区三区四区 | 欧美日韩一区二区综合在线 | 欧美精品视频免费看 | 911亚洲精品国产自产 | 欧美色淫网站免费观看 | 日韩一区二区三区在线精品 | 99国产精品99久| 日韩精品一区二区三区影院 | 韩国中文字幕在线观看 | 欧洲精品亚洲一区 | 欧美在线伊人 | 中文字幕亚洲综合小综合 | 国偷精品免费看 | 日本xxxx色 | 午夜高清性色生活片 | 男人的j放| 欧美亚洲日韩一区二区三区中 | 亚洲欧美日韩综合精品 | 国产精品一区亚洲一区天堂 | 国产精品好好热在线观看 | 日韩在线中文字幕 | 欧美激情一区二区三区高清视 | 欧美最新免费一区 | 一个人看的www日本高清视频 | 国产亚洲日韩a∨在线播 | 国内国外精品一区二区 | 国产人在线成 | 国产丝袜视频一区二区三区 | 91免费网站| 日韩免费视频在线观看 | 午夜三级福利在线观看 | 国产精品亚洲日本 | 精品一区网友自拍偷拍第一页 | 强奷乱码中文 | 尤物视频 | 日韩激情一区二区三区在线影院 | 欧美在线伊人 | 精品女同同性视频在线网 | 黑人巨大精品欧美一区二区免费 | 91午夜福利国产秒播在线观看 | www成年人视频 | 国产精品成人一区二区三区电影 | 中文字幕不卡精 | 亚洲免费在线观看一区二区 | 国产日韩精品视频一区二区三区 | 成人做爰66片免费看网站 | 日本中文字幕网 | wwwらだ天堂中文在线 | 视频国产精品丝袜第一页 | 成人妇女免费播放 | 91精品欧美产品免费观看 | 高清免费国产传媒海量视频 | 国产女主播精品大秀系列 | 日韩国产亚洲一区二区 | 精品日韩国产欧美 | 亚洲成v人片在线观看福利 日本搞黄在线观看 | 免费国产精品视频 | 国产精品国内免费一区二区三区 | 日韩欧美亚洲三区视频 | 6080欧美一区二区三区四区 | 99热国产这里只有精品6 | 偷偷要色偷偷网站视频 | 精品一区二区三区三区 | 亚洲国产精品 | 日韩亚洲人成在线综合 | 丰满尤物一区二区三区 | 国产欧美日韩精 | 国产亚洲精品a在线看 | 半岛影院一级真人片 | 亚洲精品aⅴ中文字幕乱码 国产综合精品在线 | 最新日韩欧美不卡一二三 | 国产欧美日韩一级 | 日本午夜专区一 | 狼群影院视频在线观看高清版 | 日产美产国产一区二区三区在线 | 国产欧美日韩精品二区在线 | 国产精品玖玖玖在线资源 | 99国产综合视频在线播放 | 视频一区中文字幕日韩专区 | 欧美va亚洲va在 | 在线观看视频导 | 亚洲国产一区二区三区在线 | 日韩专区精品中文字幕 | 成人涩涩小片视频日本 | 一区二区色综合 | 韩国女优| 亚洲va在线观看日本 | 精品视频在 | 蜜桃视频一区二区 | 女の乳搾りです在线观看 | 日本哺乳期xxxx | 亚洲精品r级在线观看网站 182tvc午夜福利在线观看污 | 蜜臀āv午夜在线 | 亚洲欧美在线精品一区二区 | 97视频全国精品 | 91精品福利资源在线观看 | 国产suv精品一区 | 国产日韩欧美亚洲 | 欧美日韩综合不卡一区二区三区 | 欧美在线人成北岛玲 | 国产欧美曰韩一区二区三区 | 亚洲韩精品欧美一区二区三区 | 亚洲精品男女视频在线 | 日韩女同性恋一区二区三区 | 国产日韩成人精品视频 | 亚洲2025天天堂在线观看 | 国产国产久热这里只有 | 私人尤物在线精品不卡 | 欧美a级毛欧美1级a大片式放 | 泡妞视频app污污污 精品国产亚一区二区三区 成人a∨电影天堂 | 欧美视频在线观看 | 骚女影院| 三级影视 | aaa欧美色吧激情视频 | 痴汉系列在线观看 | 亚洲中文字幕人成乱在线 | 亚洲欧美综合另类中字 | 免费看黄的网址 | 欧美.日韩.日本国产视频 | 色涩网站在线 | 手机看片精品 | 99热在线精品国产观看 | 每日更新在线观看 | 海量热播电视剧手机电影在线观看 | 日韩欧美国产aⅴ | 最美情侣高清视频大全 | 国产网红主播 | 日本欧美日韩视 | 野花在线观看免费 | 欧美亚洲一区二区三区三 | 娇小videodes极 | 91免费版在线观看 | 亚洲色大成网站www永久男同 | 亚洲女女女同性video | 九九热精品在线视频观看 | 国产一区精品在线观看 | 永久四色| 亚洲人成网站77777免费 | 日本丰满岳乱妇在线观看 | 日本aⅴ永久免费网站www | 国产专区第一页 | 国产91精品福利资源在线观看 | 欧美午夜激情影院 | 91欧美尤物精品 | 精品国产精品国在线 | 女同性另类一区二区三区视频 | 日韩欧美一区二区在线观看 | 亚洲国产不卡一区二区三区 | 日本精品中文字幕阿v免费 日韩精品亚洲精品第一页 视频在线播放在线观看 | 重口视频二区在线观看 | 性午夜视频在线观看 | 久爱免费观看在线网站 | 无人区大片中文字幕在线 | 国产一卡二卡3卡四卡免费 亚洲国产人成在线观看 | 欧美日韩免费手机在线 | 国产丝袜视频在 | 美女是黄的网址视频在线 | 日韩欧美亚洲中文字幕 | 乱伦日本亚洲中文 | 精品一区二区三区的国产在线观 | 国产日产欧产精品精品 | 在线天堂免费中文字幕 | 国产一区二区高清在线 | 精品尤物在 | 日韩中文字幕高清一区 | 91福利精品老师国产自产在线 | 日本成a | 日日摸处处碰夜夜爽 | 97午夜理论片在线影院 | 51国偷自产一区二区三区 | 国产精品1卡2卡3卡4卡 | 国产视频高清在线观看 | 日韩高清三级在线观看 | 欧美自拍偷拍一区二区 | 一品二品国精破解 | 中日韩国内精品视频 | 三年片在线| 伊人成色综合网 | 国产一区三区二区中文在线 | 国产灌醉迷晕在线精品 | 国产午夜在线精品 | 亚洲欧美日韩高清综合678 | 日本在线观看的免费 | 亚洲午夜福利院在线 | 国产护士视频在线观看 | 国产夫妇精品自在线 | 亚洲精品国产精品乱码不99 | 中文字幕精品一区二区三区在线 | 亚洲国产aⅴ成人精品无吗 国产真实乱人视频在线看 成人精品一区二区电影 | 日韩欧美国产偷亚洲清高 | 乱子伦在线观看 | 午夜区一区二区在线观看 | 韩国三级香港三级日本三级 | 日韩在线观看高清 | 国产手机 | 精品国产自在97香蕉 | 精品乱子伦一区二区三区火豆网 | 成人激情午夜福 | 欧美xxxx黑人又粗又长精品 | 国产在线视频精 | 午夜三级a三级三点 | 五月天开心激情网 | 国产在视频线精品视频二代 | 国产欧美日韩制服在线 | 99热这里只有免费国 | 日韩一级性生活 | 伊人亚洲日韩欧美一区、二区 | 国产亚洲综合一区柠檬导航 | 亚洲线精品一区二区三区四区 | 国产a∨天天免费观看美女 欧亚成人 | 善良的岳hd中字伦理 | 欧美一级成人免费大片 | 欧美亚洲精品在线 | 成全免费高清观看在线电视剧 | 精品产区wnw2544| 欧美综合自拍亚洲综合百度 | 国产一区二区精品在线 | 国产精品片在线 | 精品一区二区在 | 丝袜美腿一区二区三区 | www免费视频在线观看播放 | 国产午夜福利a∨在线机视频 | 国产亚洲久一区二区 | 国产中文亚洲日韩欧美 | 国产在线观看91精品 | 欧美黑人巨大精 | 欧美成a人片在线观看久 | 国产午夜在线观看视频 | 在线免费观| 韩国一区二区在线观看免费在线 | 国产午夜免费视频 | 国产第二页无限好源 | 99在线视频免费观看 | 99免费精品| 九九九精品视频免费 | 自拍偷自拍亚洲精品偷一 | 大胸视频在线观看国产 | 国产亚洲日韩网欧美在线播放 | 国产福利在线观看免费第一福利 | 精品免费看国产一区二区 | 独家高清资源库 | 熟女一区中文字 | 亚州国产精品一线北 | 亚洲大片在线观看网址 | 尽享高清电影和精彩影视剧 | 午夜视频在线免费观看 | 一区二区视频 | 精品一区二区三区视频日产 | 国产精品r级在线 | 欧美一区二区三区gg高清影视 | 日韩一区二区三区免费高清 | 午夜欧美在线 | 日本强伦 | 欧美精品1区2区 | 国产专区在线 | 欧美国产日本韩在线 | 欧美在线视频 | 一区二三区小说 | 极品吹潮视频 | 网站资源多午夜 | 欧美日韩一区二区不卡 | aaa欧美色吧激情视频 | 国产喷水在线观看 | 国产精品欧美日韩 | 国产精品第一区第27 | 福利在线视频观看不卡 | 99re16热视频精品 | 国产精品人成在线播放新网站 | 中文字幕亚洲精品第1页 | 国产一区二区三区小说激情 | 日韩欧美第一区 | 欧美精品网站一区二区三区 | 欧美三级一区二区 | 国产绿奴视频在线观看 | 亚洲日韩在线观看免费视频 | 成a人片免费在线观看 | 欧美日韩亚州在线 | 免费最新电视剧 | 欧美激情欧美狂野 | 欧美日韩在线视频观看 | 日韩国产欧美在线 | 中字幕一区二区三区乱 | 老司机在线精品视频播放 | 国产又刺激又黄又爽又湿 | 欧美日韩国产第1 | 国产国产成年人 | 欧美性猛交xxxx黑人猛交 | 国产一区二区不卡视频 | 午夜影院0606免费 | 国产免费一级高清 | 人妖ts国产手机在线 | 91免费永久国产在线观看 | 成人午夜污污在线观看网站 | 300部国产真实乱 | 国产一区二区三区精品视频 | 手机看片免费永久在线观看 | 免费a级网站 | 国产精品欧美1区2区3区 | 国在线视频| 亚洲自偷自拍另类第1页 | 乱淫视频 | 国产又粗又 | 日本一区二区三区www | 国产亚洲束缚综合在线 | wwwwww色| 91精品污 | 国产舌乚八伦偷 | 日本乱理伦片在线观看中文 | 国产骚系列在线观看 | 亚洲欧美精品综 | 成年人色色免费电影 | 亚洲老热 | 噼里啪啦的视频免费观看 | 国产精品亚洲社区在线观看 | 国产一级精品在线播 | 久热爱精品视频在线 | 99热国产这里只有精品 | 8x8ⅹ国产精品 | 国产精品一区免费观看 | 在线一区免费播放 | 国产娱乐凹凸视觉盛宴在线视频 | 国产精品一区不卡在线 | 成人一区在线观看 | 欧美日韩精品专区在线 | 色涩网站在线 | 日韩精品亚洲电影天堂 | 国产午夜福利片一区在线观看 | 国产午夜福利在线观看1000集 | 亚洲国产欧美国产第一区二 | 日韩精品一品道精品在线观看 | 小蝌蚪日韩国产高清影片 | 国产午夜视频在线观看 | 日本午夜网站 | 日本视频www色变态 国产精品综合视频一区二区 | 91精品国产免费青青碰在线观看 | 色老板精品视频在线观看 | 欧美精品在线播放 | 99视频30精品视频在线观看 | 97人人揉人人捏人人添电影 | 欧美在线精品亚洲综合网 | 国产未成女一区二区 | 一本大道在线 | a人片在线观看苍苍影院 | 国内女人喷潮完整视频 | 区二区三区观看 | 日本一本高清视 | 国产在线每日更新 | 成人午夜视频免 | 福利在线视频欧美 | 欧美经典伦理电影 | 欧美a级片第一页 | 国产微视频在线观看网站 | 蜜芽va亚洲 | 国产乱码卡二卡 | 视频区国产图片区小说区 | 日韩一区二区高清视频免费在线 | 99热国产精品 | 中文韩国午夜理伦三级好看 | 无线资源国产资源好片欧美 | a亚洲欧美| 国产午夜三 | 巨爆中文字幕巨爆区 | 日本三级网站在线观看视频 | 99re在线观看视频 | 亚洲电影在线观看 | 720国产在线播放啪 欧美日韩亚洲一区 | 久青草国产在视频在线观看 | 爱美剧在线观看美剧 | 亚洲精品高清中文字幕完整版 | 三级乱伦国产欧美 | 国产一区二区三区乱码 | 国产中文字幕在线观看 | h视频免费在线 | 91精品污 | 国产乱码一卡二卡3卡四卡 国产精品视频每日更新播放 | 亚洲尺码一区二区三区 | 办公室大战高跟丝袜秘书经理ol | 精品国产福利在线观看 | 欧美a级v片不 | 天天插一插 | 欧美性色欧美 | 国产精品不卡免费视频 | 国产91视频在线观看 | 欧美日韩综合一区二 | 亚洲人成网线在线播放va | 亚洲精品在看在线观看 | 国产普通话激情对白tube | 欧美视频日韩视频国产视频 | 亚洲激精日韩激情欧美激 | 欧美影院| 国产精品亚洲综合一区在 | 极品一区二区三 | 国产在线观看色免費資訊 | 91精品免费看 | 国产一卡2卡三卡4卡在线观看 | 日韩在线a视频免费播放 | 国产日韩欧美亚洲视频观看 | 欧美日韩国语aⅴ视频网站 97国产精品系列在线观看 | 日韩免费高清专区 | 日韩欧美在线视频 | 亚洲v中文在线播放免费 | 国产日产欧产精品精品免费 | 欧美一区自拍一区偷拍一区 | 99精品自拍偷拍一区二区 | 日本乱码一区二区三区视频 | 日韩不卡高清中文字幕 | 热门电影电视剧短剧免费在线观看 | 动漫精品一区视频在线观看 | 日本一本之道之视频在线不卡 | 免费精品99久 | 老司机成人精品视频lsj | 中文字幕精品亚洲无线码一区应 | 精品国产亚洲人成在 | 99在线精品国自产拍不卡 | 51福利国产在线观看午夜天堂 | 女人国产香 | 在线成人免费观看国产精品 | 国内精品手机在线观看视频 | 国产免费一区二区三区在线观看 | 国产在线看片免费人成视频 | 午夜性爱故事在线观看 | 盗摄国产一区二区 | 吾爱第一福利在 | 欧美日韩午夜福利一区二区 | 午夜成人精 | 91精品国产亚洲爽啪在线影院 | 快活影院永久地址 | 成人欧美一区二区三区在线观看 | 在线免费观看污网站 | 成人亚欧网站在 | 亚洲国产的精品太乱码一区二区 | 成年女性特黄午夜视频免费看 | 精品国产一区二区三区 | 秋霞电影在线观看 | 星辰影视大全免费版官网 | 欧美性爱插插插 | 日韩成人福利片 | 美腿丝袜亚洲综合在线视频 | 精品国产一区二区三区四不卡在线 | 99r精品亚洲| 日本视频不卡一区二区 | 日本伦理电影免费观看 | 免费永久在线观看污污的网站 | 51vⅴ免费视 | 乱子伦国 | 国内精品国语自产拍在线观看91 | 欧美综合自拍亚洲综合网 | 日韩欧美中文字幕一区二区三区 | 国产午夜免费高清视频 | 国产精品成人亚发布 | 91精品国产一区二区三区香蕉 | 国产在线91精品天天更新 | 中文字幕在线一 | 91视频专区 | 欧美亚洲国产一区在线观看网站 | 成人福利app导航秘 国产在线观看色 | 精品一区二区国产在线观看 | 日韩美一区二区 | www官网在线 | 国产在线播放不卡免费 | 日韩欧美中文字幕综合色 | 精品国产自在现偷99精品 | h视频网站 | 日韩国产综合在线 | 欧美最新免费一区 | 亚洲变态 | 超国产人碰人摸人爱视频 | 国产亚a| 欧美一区二区不卡高 | 91精品国产闺蜜国产在线闺蜜 | 丝袜制服诱惑第一页一区 | 欧美一区二区三区男人的天堂 | 国产精品第三页 | 91热精品 | 中文字幕一区二区三区精品 | 欧美日韩国产精品一区 | 精品日本一区二区三区在线 | 日本国产欧美精品在 | 日韩亚洲欧美亚洲一区二区 | 国产又粗又猛又爽又黄的视频 | 精品欧美在线观看 | 欧美专区在线播放 | 欧美高清一区 | 亚洲经典在线中文字幕 | 影视最全更新最快 | 国产玉足sm足控脚交视频 | 亚洲欧洲自拍图片 | 腿露私下| 另类重口 | 国产va免费精品高清在线 | 国产免费一区不卡在线 | 国产尤物尤物在线看 | 国产日产免费高清欧美一区 | 日韩在线播放中文字幕 | 国产玩弄醉 | 91福利 | 日韩怡红院亚洲精品二区 | 亚洲精品无 | 欧美三级美国一 | 五十路熟女俱乐部 | 在线亚洲 | 在线亚洲v日韩v | 欧美天堂亚洲天堂 | 免费高清电影在线观看 | 乱伦视频 | 中文在线欧美亚洲制服 | 国产福利免费 | 日韩精品欧美有码 | 久青青视频精品免费观看 | 欧美激情拍拍拍 | 亚洲一区二区三区和欧美四区 | 日韩亚洲一区二区三区 | 国产人碰人摸人爱视频 | 精品国产一区二区三区香蕉不卡 | 最新理论片在线观看免费 | 97一区二区国产好的精华液 | 二区62| 永久在线免费观看美女热比网站 | 一区二区三区国产美女在线播放 | 国产人妖在线播放网址 | 97超级碰碰碰电影 | 亚洲国产精品va在线播放 | 欧美日韩精品激情福利综合 | 欧美日韩国产资源一区二区 | 舔射插啊~在线观 | 免费国产va在线观看中文字 | 欧美乱妇日本无乱码特黄大片 | 亚洲视频偷拍视频2亚 | 国产原创 | 天天看片高清观看免费国产 | 精品福利一区二区三区免费视频 | 国产在线观看91精品一区 | 日本高清另| 国产精品制服一区二区 | 区二区软件 | 无吗一区二区三区 | 亚洲男人片片在线观看 | 欧美一级做a爱高清免费观看 | 另类亚洲综合区图片小说区 | 成在线人免费视频 | 亚洲va国产日韩欧美精品 | 中文字幕乱码亚洲无线三区 | 另类熟女伦乱视频 | 色护士极品影院 | 欧美日韩中文亚洲v在线综合 | 日韩vs欧美vs国产肉 | 成人3d精品动漫在线播放 | 韩漫漫画在线观看 | 在线综合亚洲欧美日韩手机版 | 最新电影观看 | 欧美囗交xx×b | 国产精品日韩激情在线观看 | 欧美精品免费一区二区三区在线 | 亚洲日本va在 | 视频播放| 国产人妖专区视频在线一区 | 欧美一级精品免费播放 | 国产精品一区视频 | 国产综合色在线视频区 | 高清一区二区三区视 | 国产在线偷 | 成年轻人视频免费视频 | 国产高清精品自在线看 | 电视剧大全 | 日韩精品中文 | 国语自产精品视频在线看 | 啦啦啦免费高清视频 | 日韩高清在线有码中文字幕 | 欧美日韩亚洲国产一区 | 一出一进一爽一粗一大视频免 | 日韩精品一区二区三区在线 | 亚洲精品无播 | 最近中文字幕高清一区二区 |