国产精品青草久-国产精品情侣愉拍-国产精品区网红主-国产精品区一区二-国产精品热久久-国产精品热热热-国产精品人aⅴ-国产精品人成在线-国产精品人妻人伦-国产精品人人

金喜正规买球

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
国产欧美日韩综合精品一区二区 | 亚洲av无码专区国产乱码 | 精品自拍视频在线观看电影 | 日本高清在线播放一区二区三区 | 亚洲无码免费在线小视频 | a级毛片无码 | 亚洲tv| 国产午夜激无码av毛片 | 在线欧美中文亚洲精品 | 亚洲无码高清福利久久 | 中文字幕无码在线观看 | 精品国产大片免费色综合久久久 | 亚洲国产精品热久久 | 精品中文字幕免费在线观看 | 亚洲欧美一区二区三区蜜芽 | 亚洲中文字幕精品一区 | 色偷一区国产精品 | 亚洲成a人v欧美综合天堂 | 欧美va亚洲va国产综合 | 国产免费趣味软件盘点:畅享高清 | 高清无码一区波多野结衣x99av | 国产九九久久99精品影院 | 欧洲精品亚洲精品日韩专区 | 国产福利一区二区 | 精品尹人在线观看 | 中文字幕免费无码专区 | 在线日韩日本国产亚洲 | 韩国无码无遮挡在线观看 | 国产乱码久久精品无码专区免费 | 日本中文字幕亚洲乱码视频 | 91制片厂果冻传媒 | 色综合天天综合网天 | 国产爱豆传媒 | 中文字幕高清免费大全8 | 国产特级亚州一级淫片 | 人妻丰满精品一区二区a片 人妻丰满熟av无码区hd | 国产精品网红尤物 | 91久久久人妻精品 | 黄视频在线观看无遮挡 | 国产成人精品免费视频大全麻 | 国产高清亚洲精品 | 99久久精品无码一区二区毛片免费 | 成全动漫高清电影好看的电视剧 | 欧美色蜜桃97中文字幕在线播放 | 精品久久久久久中文字幕人妻 | 国产精品欧美在线 | 午夜全免费一级毛片在线播放 | 97久久久久国产精品嫩草影院 | 狠狠躁夜夜躁人人爽天天开心 | 99在线精品免费视频九九视 | 日韩精品无码久久一区二区三 | 国产成人精品无码 | 无码中文 | 丰满妇女强制高潮18xxxx | 97精品伊人久久大 | 人人超人人超碰超国产97超碰 | 人妻系列无码专区久久五月天 | 97久久精品久久免费观看 | 亚洲精品无码av人 | 99热从新兴趋势到潮流风口 | 国产成人精品午夜福利在线观看 | 国产久久九九精品无码免费 | 91精品无码国产在线观看一区 | 国产欧美日韩一区二区三区在线 | 亚洲午夜久久久影院伊人 | 91在线字幕 | 亚洲乱亚洲乱妇无码 | 亚洲欧美一区二区三区在线播放 | 精品高潮呻吟99av无码视频 | 精品久久久无码中字 | 97青草最新免费精品视频 | 国产精品一区二区高清在线 | 无码av免费一区二区三区 | 91网站永久免费看 | 无码影院av | 午夜神马 | 精品无码国产自产在线 | 精品国产91乱码一区二区三区 | 国产成人午夜精品免费 | 日韩av午夜无码专区 | 国产真实露脸乱子伦 | 中文字幕在线亚洲精品 | 亚洲成a人片777777 | 亚洲a∨| 精品一区二区中文在线 | 十大免费看污软件 | 欧美视频在线 | 午夜在线欧美曰韩精品影视 | 国产一区二区三区四区三区 | 国产成人亚洲综合精品 | 亚洲精品无码h片在线播放 亚洲精品无码mv在线观看 | 精品少妇人妻av无码专区偷人 | 日韩高清在线观看 | 亚洲国产成人99精品激情在线 | 变态sm天堂无码专区 | 亚洲丰满爆乳肉感无码一区二区三 | 国产一级特黄在线播放 | 欧洲人体亚洲 | 丝袜无码一区二区三区 | 亚洲av无码av吞精久 | av在观线观看男人的天堂 | 亚洲精品成人网线 | 日韩无码久久 | 亚洲国产精品嫩草影院永久 | 中文字幕在线免费视频 | 91麻豆国产精品免费视频 | 97精品国产高清自在线看超 | 二区三区视频 | 日韩无码电影一区二区 | 欧美日韩一区二区三区在线视频 | 老司机亚洲精品 | 九七电影院 | 99久久精品免费看国产一区二区 | 白丝爆浆18禁一区二区三区 | 国产精品分类视频分类一区 | 国产精品一区二区三区四区五区 | 久久不精品亚洲无码视频 | 97久久久久国产精品嫩草影院 | 国产欧美另类久久 | 亚洲成av人片在线观看ww | 午夜婷婷精品午夜无码a片影院 | 97人人摸人人操 | 国内精品免费久久久久电影院97 | 亚洲成av人片无码不卡播放器 | 四虎影视成人永久免费观 | 国产精品99久久久久久人 | 91麻豆精品激情在 | 无码潮吹无毒不卡 | 国产成人精品亚洲日本在线 | 中文字幕久久熟 | 精品探花在线 | 91精品国产aⅴ一区二区 | 少妇被躁爽到高潮无码文 | 国产人妻人伦精品1国产盗摄 | 婷婷久久青草99热福利 | 国产精品一区二区手机看片 | 成人动漫h在线观看 | 国产一区二区三区日韩精品 | 亚洲伊人成人 | 91香蕉国产在线观看免费永久 | 国产日本精品在线观看 | 97久人人做人人妻人人玩精品 | 色婷婷综合和线在线 | 欧美精品黄页免费高清在线 | 成年人高级 | 亚洲日本韩国在线 | 欧美日韩免费专区在线观看 | 国精品无码一区二区三区 | 亚洲av女人天堂 | 国产精品夜间视频香蕉 | 国产呦在线观看欧美一区 | 91精品免费不卡在线观看 | 亚洲美女高潮久久 | 国产乱人伦偷精品视频 | 国产午夜福利 | 91探花在线观看 | 亚洲av鲁丝一区二区三区 | 欧美日韩人妻精品系列一区二区三区 | 国产欧美亚洲三区久在线观看 | 日本欧美一区二区三区在线播放 | 日韩无码 | 在线观看激情无码成人av | 国产精品国产三级国产专i 国产精品国产三级国产专播 | 国产欧美a∨一区二区 | 日韩a片一级无码 | 精品少妇 | 国产成人免费av片在线观看 | 91视频免费看| 人人人澡人人人妻人人人爽 | 丰满人妻中文字幕无码 | 精品少妇人妻av无码久久 | 国产欧美综合在线一区二区三区 | 神马午夜影院 | 国产精品专区 | 欧美成人精品一区二三区在线观看 | 91视频91自拍国产自拍高清 | 成人午夜精品无码区久久 | 91探花大神纪实 | 亚洲日韩国精品视频一区二区三区 | 欧美精品在线一区二区三区 | 日韩精品在线免费 | 国产激情视频在线观看免费播放 | 国产午夜精品理论片久久影视 | 欧美最猛性xxxxxx | 波多野结衣在线调教免费观看 | 在线看片免费人成视久网 | 国产亚洲福利精品一区二区 | 日韩激情不卡一 | 国产不卡在线观看 | 欧美日韩国产一级久久忘忧草 | 国产精品精品综合在线网 | 91香蕉app下载免费版 | 色欲色欲日韩www在线观看 | 午夜av理论片一区二区三区 | 三上悠亚国产精品一区 | 性色av性色生活片 | 国产成人久久精品一区二区三区 | 久久99久国产精品黄毛片 | 99热最新在线丝袜 | 国产日韩精品无码区免费专区国产 | 老司机67194免费观看 | 91黑料精品国产 | 亚洲成a人在 | 国产成人a∨大片在线 | 亚洲中文字字幕精品 | 国产911视频在线观看 | 在线观看91精品国产入口 | 中文字幕中出在线观看 | 中文字幕一区二区三区免费看 | 91久久国产综合 | 91午夜理伦私人影院 | 欧美熟妇乱子hdsex粗 | www成人国产在线观看网站 | 精品人妻少妇嫩草av无 | 欧美另类一区二 | 国产午夜福利在线观看视频 | 国产欧美日韩综合一区 | 91麻豆精品国产91久久久久久 | 亚洲av美女一区二区三区 | 在线观看三级片国产 | 国产高潮国产高潮久久久 | 亚洲午夜精品一区二区 | 亚洲av无码精品色午夜 | 99热国产这里只有精品6 | 91精品秘密秘在线观看 | 无码av在线a√av在线 | 成年女人免费视频播放大全 | 亚洲欧美成人久久综合中文 | 97精品国产高清自在线看超 | 91久久国产电影 | 成人毛片18女人毛片免费看视频 | 亚洲国产911在线观看 | 亚洲一级无码中文字幕 | 91精品国产乱码在线观看 | 精品国产天堂 | 亚洲成av人片无码天堂 | 天天插日日操 | 无码免费h在 | 亚洲av综合色区在线观看 | 欧洲精品亚洲精品日韩专区 | 国产作爱视频免费播放 | 国产成人久久综合一区77 | 黄色网站在线播放 | 三级片中文字幕 | 亚洲中文字幕乱码无码一区二区 | 国产办公室秘书无码精品 | 制服国产在线观看 | 国产精品69白浆在线观看免费 | 成人电影免费 | 亚洲欧美成人精品一区二区 | 日韩一区二 | 国产精品午夜男女大片免费看 | 风间由美性色一区二区三区 | 欧美a级片免费看 | 91人人摸人人爽人人爱 | 97人人超碰 | 亚洲另类图区影 | 精品无码一区 | 三颗国产精品视频一区二区免费 | 国产毛片a级久久久不卡精品 | 国产精品成人久久久久 | 亚洲欧美黄色站在线观看 | 国产成人久久精品一区二区三区 | 日韩欧美一区二区三区在线视 | 国产成人aaaaaaa毛片 | 国产日韩av免费无码一区二区 | 亚洲欧美日韩一区 | 东京热app | 91制片厂果冻传媒首页 | 国产亚洲免费在线观看 | 东京热久久无码av高潮喷 | 精品国产免费久久无码 | 欧美精品一区二区精品久久 | 久久高清自拍中文 | 国产破外女出血视频全集 | 国产在线精品一区二区三区精品 | 亚洲精品麻豆视频 | 国产一区二区视频在线观看 | 97国产在线一区不卡 | 亚洲成人在线一区二区 | 国产a∨国片精品白丝美女视频 | 99久久五月天婷婷中文字幕精品 | 国产成人综合亚洲av小说 | 日本高清不卡中文字幕网 | 国产人a片在 | 无码精品人妻一区二区三 | 亚洲av一级在线免费观看 | 国产人妖ts吞精在线观看 | 日本一区二区在线播放 | 欧美老熟妇videos极品另类 | 中文字幕爆乳巨爆乳 | 99久久婷婷国产综合精品青草免费 | 国产对白国语对白 | 日韩高清在线第一页 | 国产白嫩美女在线观看 | 日韩精品一区二区三区高清免费 | 黄色av网| 国产成人aa在线观看 | 人妻系列无码专区久久五月天 | 97伦理电影院免费不卡在线观看 | 风间中文字幕亚洲一区 | 日日做夜夜爽夜夜爽 | 国产精品毛片无码一区二区蜜桃 | 亚洲国产另类久久久精品网站 | 丰满人妻一区二区三区免费视频 | 91精品国产麻豆福利在线 | 羞国产在线 | 国产色欲av精品一区二区 | a级毛片高清免费 | 欧美成人在线观看 | 精品国产免费人成电影 | 国产精品一区二区三区四区五区 | 日韩av不卡在线观看五月 | 91九色porny国产 | 97超级碰碰碰久久久久 | 精品午夜久久福利大片免费 | 精品人无| 69日本精品成人无码视频 | 无码人妻一区二区三区精品视频 | 精品午夜福利1000在线观看 | 国产精品色欲av蜜臂在线观看 | 99久久免费只有精品国产免费视频 | 不卡网国产精品一区二 | 老司机性色福 | 国产成人综合亚洲亚洲欧美 | 婷婷色国产精品视频一区二区 | 精品国产一区二区三区不卡 | 91精品日本久久久久久牛牛 | 成全在线观看免费高清电视剧 | 在线免费观看a级片 | 人妻体内射精一区二区三区 | 国产一级av国片免费 | 很黄色的久久精品黄色片子 | 国产欧美不卡在线观看视频 | 中文字幕乱码亚洲∧v日本1 | 成人毛片无码一区二区三区 | 日本高清在线播放一区二区三区 | 精品久久久久久久久国产免费 | 国产精品夜色视频一区二区三区 | 国产91无码网站在线观看 | 欧美猛交xxxxx | 黄色网站高清视频一级毛片 | av不卡国产在线观看 | 亚洲av中出手机版在线观看 | 国产亚洲欧美日韩在线观 | 欧美日韩精品suv | 亚洲av无码乱码麻豆精品国产 | 国产在线视频www | 午夜精品久久久久蜜桃 | av在线亚洲男人的天堂 | 欧洲熟妇色xxxx欧美老妇软件 | 国产一在线精品一区在线观看 | 久久96热人妻偷产精品 | 97无码免费人妻超级 | 午夜在线观看亚洲国产欧洲 | 中文字幕人成乱码熟女app | 天堂最新版在线www官网中文地址 | 91极品尤物18禁国产在线播放 | 色欲天天久久久久 | 国产精品兄妹在线观看麻豆 | 国产精品一久久香蕉国产线看观看 | 亚洲精品无码高潮喷水a片软 | 国产在线自在拍91 | 国产欧美日韩一区二区三区在 | 国产精品一区高清在线观看 | 国产激情一区二 | 久久国产成人精品国产成人亚洲 | 精品无码不卡中文字幕 | 91香蕉国产线观看免费茄子 | 日韩一级特黄av毛片 | 国产精品毛片av一区二区 | 熟妇人妻av无码一区二区三区 | 亚洲中文字幕无码av永久 | 91亚洲一区二区在线观看不卡 | 无码国产精品一区二区免费式芒果 | 午夜福利视频免费看床戏激情 | 精品一区二区三区视频在线观看免 | 黄色成人在线播放 | 国产色综合久 | 亚洲欧美日韩久久精品 | 日韩欧美国产综合在线 | 日韩在线一区二区 | 精品999久久久久久中文字幕 | 人妻少妇久久中文字幕一区二区+ | 亚洲精品宾馆在线 | 欧美一级特黄特色大片免费 | 亚洲精品无 | 成全在线观看免费高清电视剧 | 国产精品亚洲一区二区无码色欲 | 三级久久试看3分钟 | 亚洲成av人片无码不卡播放器 | 亚洲日本va中 | 91欧美激 | 99re免费视频国产在线播放 | 91啪在线视 | 精品日本亚洲专区 | 色五月丁香花自拍自偷国产 | 国产精品无码mv在线观看 | 久久99国产精一区二区三区 | 亚洲一区二区三区中文字幕在线 | 九九热精品在线视频观看 | 国产亚洲精品久久久久秋霞 | 精品国精品国产自在久国产应用 | 亚洲精品高清视频 | 91香蕉高清国产线观看免费 | 免费一级做a爰片久久毛片潮 | 亚洲国产成人 | 无码国产精品午夜不卡 | 国产av丝袜旗袍无码网站 | 亚洲精品中文字幕乱码三区 | 亚洲中文字幕无码av | 欧美少妇国产影视 | 国产一区二区三区成人欧美日韩在 | 欧美日韩成人综合网站 | 国产美女白丝袜精品视频 | 99久久精品 | 亚洲国产成人五月综合网 | 欧美精品久久久久久久久爆乳 | 一区二区三区免费在线观看 | 亚洲成aⅴ人片在线观看www | 91在线精品麻豆欧美在线 | 99久久精品免费看国产一区乱理片 | 日本女优久久久啊的黄色视频 | 中文字幕免费在线看线人动作大片 | 91精品丝袜国产在线一区 | 亚洲午夜精品成人毛片 | 风流老熟女一区二区三区l 风流老太婆大bbw | 中文字幕亚洲情99在线 | 精品国产三级毛片 | 国产福利91精品一区 | 午夜影视啪啪免费体验区 | 狠狠综合久久av一区二区 | 香蕉久久91综合一区二区三区 | 国产精品点击进入在线影院高清 | 国产成a人亚洲精ⅴ品无码樱花 | 国产成人影院一区二区三区 | 少妇无码中 | 91精品视频播放 | 超碰人人看人人爽 | 国产无套白浆视频在线观看 | 国产伦精品一区二区三区视频 | 日韩国产激情www | 欧美日韩精品一区 | 亚洲精品午夜 | 加勒比在线一区二区三区 | 国产精品资源在线播放 | 午夜美女黄网站18禁免费观看 | 无码专区一va亚洲v专区在线 | av老司机亚洲精品天堂 | 97久久久精品网站 | 黄色免费国产小视频 | 精品无码久久久久久久久 | 国产精品福利一区 | 色综合天天综合网天 | 亚洲av人无码综合在线观看 | 91在线码无精品秘?入口九色 | 国产日韩一区美利坚 | 99r在线精品视频在线播放 | 国产又爽又 | 亚洲国产成人精品久久久 | 成年女人毛片免费视频 | 欧美精品v国产精品 | 亚洲av无码片vr一区二区三区 | 成年在线观看免费人视频 | 亚洲av综合色区在线观看 | 精品深夜av无码一区二区老年 | 白丝爆浆18禁一区二区三区 | 欧美日韩国产一级久久忘忧草 | 99热这里只有精品国产99 | 亚洲av永久无码精品网站色欲 | 欧美亚洲另类综 | 91视频免费看无限看下载 | 97热久久免费频精品99 | 午夜电影网首页 | 日本三级片在线观看 | 99久久99久久精品国产 | 特级丰满少妇一级aaaa爱毛片 | 国产av熟女一区二区三区 | 国内精品一区二区三区最新 | 一区二区三区国产精品保安 | 无码国产精品一区二区免费久久 | 在线观看国产精品 | 3d动漫精品啪啪一区二区中 | 国产成人av无码网站久久 | a级国产乱理论片 | 国精产品一品二品国精品69xx | 亚洲精品亚洲人成在线播放 | 亚洲成a人片在线观看无码 亚洲成a人片在线观看无码3d | 国产精久久一区二区三区 | 国产福利一区二区三区在线 | 精品久久久爽爽久久久av | 一区二区三区免费观看 | 国产成人亚洲日本精品 | 人人97人人超碰人人爽喊 | 午夜一二区无码视频 | 日韩东京热无码人妻 | 日本特级淫片免费看 | 91高清免费国产自产 | 97se亚洲国产综合自在线 | 97久久综合精品久久久综合 | 禁片国产电影在 | 午夜精品视频在线 | 91伊人久久| 精品www人人爽人人 精品按摩无码 | 亚洲字幕成人中文在线电影网 | 亚洲暴爽av人人爽日日碰 | 欧美一区二区三区久久成人 | 一区二区三区美女视频免费观看 | 国产成人精品综合久久久久 | 国产高清色播视频免费看 | 国产亚洲av另类一区二区三区 | 久久99国产精品二区 | 精品www人人爽人人 精品按摩无码 | 精品久久久久久中文字幕专区 | 白丝初音未来被调教出奶水 | 99re8这里有| 精品无人区一区二区三区在线 | 国产精品亚洲综合一区在线观看 | 国产樱花草青青草 | 亚洲欧美日本综合一区二区 | 国产剧情日韩 | 91久久综合精品 | www日韩av中文字幕.com | 色偷偷91久久综合噜噜噜 | 日本高清视频www | 九九re热国产精品 | h无码动漫超w网站 | 91国内精品久久久久免费影院 | 欧美色精品视频在线观看免费 | 东京热人妻一区二区三区 | 欧美亚洲国产日韩综合在线播放 | 国产日韩欧美不卡在线二区 | 精品无码一区二区三区东京热 | 国产超碰人人爽人人做人人爱 | 一区二区三区高清视频国产女人 | 99久久深夜中文字幕五月婷 | 黄网站色视频免费观看无码一区 | 99久久精品 | 国产成人午夜福利在线视频 | 99久久婷婷免费国产综合精品 | 97热久久免费频精品99 | 亚洲日韩在线观看不卡 | 国产成人亚综合91精品首页 | 日本一区二区三区专线 | 国产成人精品免费青青草原 | 欧美日韩一区二区三区在线播放 | 亚洲国产精品一卡在线观看 | 国产99久久亚洲综合精品西 | 欧美97色伦欧美一区二区日韩 | 亚洲一区二区美女av | 色护士极品影院 | 欧美成人精品视频在线观看 | 日本一区二区三区精品久久 | 丰满少妇女人a毛片视频 | 91手游网1.20安卓版 | 二区啪视频 | 日本啪视频在线观看精品综合 | 午夜福利在线视频性色 | 91精品国产综合久久久动漫百度 | 中文无码在线观看可乐视频 | 亚洲成av人影院无码不卡 | 国产精品自产拍在线网站 | av无码国产在线看免费网站 | 午夜福利不卡片在线播放 | 国产精品综合日韩精品第一页 | 97国产精品| 国自产偷精品不卡在线 | 最新欧美国产91麻 | 91星空无限传媒在线 | 欧美色精品视频在线观看免费 | 色国产视频 | 色视频www| 99福利资源久久福利资源 | 日本中文无线码在线观看 | 亚洲av纯肉无码精品网站 | 国产精品蜜桃在线观看 | 高潮毛片无遮挡高清免费视频 | 精品无码av无码免费专区 | 韩国高清一区二区午夜无码 | 无码不卡一区二区三区在线 | 亚洲国产精品国自产拍av麻豆 | 欧美日韩在线第一页免费观看 | 国产精品va无码一区二区三区 | 人妻精品无码一 | 国产av国片精品无套内谢无码 | 国产无码一区二区三区不卡视频 | 色综合久久久久久久久久 | 日本免费一区精品推荐 | 日亚毛片av免费不卡一区二区 | a网站在线观看 | 亚洲午夜精品a片一区三区无码 | 亚洲一区日 | 黄网站色视频免费观看无码一区 | 国产a级三级三级三级 | 中文字幕+乱码+中文乱码www | 一区二区日韩国产精品 | 欧美性在线播放 | 色综合天天综合网在线观看 | 国产精品免费aⅴ片在线观看 | 亚洲国产日韩在线观看18 | 91成人免费视频 | 中文字幕成人精品久久不卡 | 99视频2025最新版下载 | 国产在线麻豆影院 | 九九热在线视频观看 | 亚洲国产日本一区二区 | 精品国产一区二区三区噜噜噜 | 久爱免费观 | 成人无码视 | 无人在线视频高清免费观看 | 麻豆精品久久精品色综合 | 中文字幕久无码免费久久 | 无码av免费精品一区二区三区 | 国产精品午睡沙发系列 | 91国自啪 | 国产欧美精品一区二区三区 | 国产人妻精品久久久久野外 | 午夜福利理论片 | 精品无码人 | 午夜剧场a级毛片 | 午夜影城无码专区 | a级毛片在线免费观看 | 99久re热视频这里只有精品6 | 99久久免费精品国产免费高清 | 精品久久久久一区二区三区 | 99热国产这里只有精品久久 | 欧美成人精品三级网站在线观 | 欧美午夜一区二区福利视频 | 国产成人午夜高潮毛片刘涛 | 精品一区二区三区四区 | 无码h肉动漫在线观看 | 一区二区三区精品视频日韩 | 亚洲综合区夜久久无码精品 | 国产伦子沙发午休系列资源曝 | 国产精品综合色区在线观看不卡 | 亚洲v无码精品色午夜v电影 | 精品国产va久久久久久久 | a性色生活片久久毛片牛牛 a亚洲欧美中文日韩在线v日本 | 亚洲妇女自偷自偷图片 | 97亚洲熟妇自 | 国产在线综合一区二区三区 | 国产日韩一区二区三区高清 | 熟女肏互换91视频成人电影 | 日韩欧国产精品一区综合无码 | av在线中文字幕不卡电影网 | 国产一级片在线 | 成人久久久 | 亚洲国产图片综合 | 国产成人av无码片在线观看 | 日韩午夜| 91在线免 | 国产无遮挡18禁无码网站 | 午夜不卡久久精品无码免费 | 国产手机在线片无 | 免费一级片观看 | 69精品丰满人妻无码视频a片 | 亚洲国产日韩欧美久久精品 | 丰满人妻跪趴高撅肥臀玄幻小说 | 国产高清看片日韩 | 亚洲精品白浆高清久久久久久 | 国产精品无码久久久久 | 精品精品国产理论在线观看 | 日韩精品无码一本二本三本色 | 九九久久精品无码专区 | 国产ts系列紫苑 | 国产aⅴ精品一区 | 91国内自产 | 中文字幕无码免费久久91 | 无码午夜成人1000部免费视频 | 97欧美中文在线播放专区 | 亚洲国产高 | 国产人成高清视频在线观看免费 | 精品夜色国产国偷自产91 | 欧洲精品码一区二区三 | 99久久久久国产精品专区无码 | 国产日韩视频毛片 | 国产午夜成人久久无码一区二区 | 91九色精品国 | 久久999国产免费 | 日韩欧群交p片内射中文 | 欧美精品一区二区三区久久久精品 | 国产无线卡一卡二 | 日韩欧美三级字幕 | 国产成人aa免费视频 | 91影院在线观看 | 国产日韩欧美综合色视频在线 | 国产又大又硬又粗 | 欧美福利影院 | 午夜福利电影1区 | 日本激情午夜在线电影观看 | 亚洲av无码一区二区二三区 | 日本中文字幕一区在线观看 | 欧美日韩国产第 | 中文字幕乱 | 午夜亚洲av日韩aⅴ无码大全 | 国产对白在线观 | 狠狠色丁香久久婷婷综合 | 精品成人av一区二区三区 | 特级毛片视频无码免费看 | 国产av+刺激+无码 | 国产成人女人在线观看 | 国产剧情调教在线 | 无码毛片一区 | 精品国产一区二区三区2025 | 二区久久 | 国产精品亚洲精品日韩已方 | 亚洲国产日产无码精品 | 欧美人妻一区二区三区 | 在线观看精品国产福利片2025 | 国产亚洲人成在线v网站 | 国产高清免费在线观看 | a级国产乱理论片在线观看 a级国产乱理论片在线观看丶 | 中文成人无码精品久久久 | 中文字幕av无码专区第一页 | 国产香蕉视频免费精品 | 99视频精品在线 | 91在线无码精品秘网站入口 | 亚洲成av人网站在线播放 | 欧美精品一区二区电影 | 精品国产乱码久久久久软件 | 超碰97久久国产人人澡 | 97se亚洲国产综合自在线尤物 | 国产午夜成人无码免费看 | 91久久国产口精品久久久 | 人妻中文字幕在线 | 成人av无码一区二区 | 亚洲av无码乱码一级毛片色欲 | 99久久国产综合精品女同 | 69视频在线观看免费 | 丰满人妻一区二区三区视频 | 无码专区日韩精品中文字幕 | 亚洲国产精品一区二区第四页 | 日本久久久久久久做爰片日本 | 国产999精品久久久久久 | 香蕉国产在线 | 国产免费mv大片人人电影播 | 国内精品九九久久久精品 | 国产午夜福利看片在线观看 | 色夜在线网站 | 日本丰满熟妇xxxxxhd | 国产香蕉视频免费精品 | 天天躁日日躁狠狠躁欧美老妇小 | 91新拍国产在线观看 | 国精品一区二区三区免费观看 | 国产成人午夜福利在线观看 | 亚洲av超清无码不卡在线网络 | 岛国aaaa级午夜福利片 | 午夜夫妻试看120国产 | 亚洲综合九九 | 国产一级特黄大片在线观看 | 国产在线观看免费 | 91精品国产综合久久久久久 | 久久99网 | 国产91熟女一区二区三区 | 国产在线观看入口网站 | 亚洲欧美变态另类综合 | 午夜理论片 | 91av在线观看国产日本视频 | 亚洲中文字幕视频免费看 | 国产成人愉拍免费视频 | 制服丝袜 | 国产一级精品久久91 | 91与国产超碰在线手机观看 | 精品人妻大屁股白浆无码下载 | 国产成人乱色伦区 | 精品无码国产自产拍在线观看蜜桃 | 午夜理论片yy4080私人影院 | 国产精品一区二区三区v | 国产艳福片内射视频播放 | 日韩超清无码 | 国产91九色| 久久99精品久久久久子伦小说 | 综合在线无码一 | 91九色在线播放 | 中文字幕在线观看高清视频 | 亚洲欧美另类成人综合图片 | 精品无码日韩一区二区三区不卡 | 国产高清在 | 日韩在线欧美精品 | 成人午夜看片 | 99精品国产综合久久五月天 | 国产福利在线 | 亚洲国产精品và在线看 | 色欲久久久久国产综合精品 | 亚洲中文字幕乱码无码一区二区 | 无码h肉动漫在线观看 | 欧美成人片 | 国产爆初菊一区视频 | 日本高清不卡中文字幕网 | 亚洲国产精品va在线观看香蕉 | 91精品国产9 | 午夜福利看片 | 亚洲日韩手机在线专区 | 国产成人v无码专区亚洲v | 国产午夜福利不卡在线观看 | 日本免费黄色片网站 | 国产免费mv大片人人电影播 | 亚洲欧美精品一中文字幕 | 国产欧美日本韩高清视频一区 |