老司机夜插-理伦理片-理伦片免费-理伦片免费观看-理伦片免费看-理伦日韩-理论福利片-理论片第一页-理论片电影-理论片理论

金喜正规买球

Qt網格組件DataGrid:如何在網格中輸入新行

翻譯|使用教程|編輯:鮑佳佳|2020-11-16 11:32:29.477|閱讀 187 次

概述:QtitanDataGrid是一款適用于Qt的商業化DataGrid 組件,它使得表格數據可以直接面向終端用戶。本文演示了用戶如何在網格中輸入新行。新行可以位于視圖的頂部或底部。

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

QtitanDataGrid是一款適用于Qt的商業化DataGrid 組件,它使得表格數據可以直接面向終端用戶。這個組件吸收了用戶界面結構顯示表格方面所有的現代化技術的精華,是目前Qt市場上唯一一款擁有如此高級功能和出色性能的網格組件。這個Qt數據網格組件使用純C++創建,運行速度極快,處理大數據和超大數據集的效果突出。QtitanDataGrid完全集成了QtDesigner,因而極易適應其他相似的開發環境,保證100%兼容Qt GUI。

點擊下載QtitanDataGrid最新試用版

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

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


代碼如下:

.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

.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_())

.cpp文件:

#include <QApplication>

#include "window.h"

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

#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);
}

.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

點擊獲取更多文章教程!現在立刻下載Qt免費試用吧!更多Qt類開發工具QtitanRibbonQtitanChartQtitanNavigationQtitanDockingQtitanDataGrid在線訂購現直降1000元,歡迎咨詢慧都獲取更多優惠>>

工具推薦:

  • QtitanRibbon| 下載試用: 遵循Microsoft Ribbon UI Paradigm for Qt技術的Ribbon UI組件,致力于為Windows、Linux和Mac OS X提供功能完整的Ribbon組件。
  • QtitanChart | 下載試用 :是一個C ++庫,代表一組控件,這些控件使您可以快速地為應用程序提供漂亮而豐富的圖表。并且支持所有主要的桌面操作系統

標簽:

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

文章轉載自:

為你推薦

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


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
91女神视频| 四虎影视四虎在钱免费 | 丁香婷婷亚洲六月综合色 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 久久国产成人福利播放 | 中文字幕精品久久久久人妻红杏1 | 国产三级三级三级三级 | www.av小视频 | 草草视频在线观看最新 | 日本激情网| 国内自拍视频一区二区三区 | 小雪第一次交换又粗又大老 | 五月婷婷激色号网 | 国产亚洲精品资源在线26u | 久久综合九色欧美综合狠狠 | 2021日日摸夜夜添夜夜添影院 | 每日最新avhd101天天看新片 | 中文字幕国产综合 | a级v片| 国产午夜精品久久理论片小说 | 和黑人高潮了10次A片 | 国产欧美日本在线 | 伊人久久大香线蕉观看 | 97人人干| 亚洲国产成人精品动漫 | 青草青在线免费视频 | 男人和女人做爽爽视频免费 | 亚洲射图| 狠狠色丁香九九婷婷综合五月 | 亚洲精品手机在线观看 | 国产女人第一次做爰视频 | 亚洲国产果果在线播放在线 | 波多野结衣在线一区二区 | 亚欧毛片 | 最爽的亂倫A片中国国产 | 精品在线视频一区 | 久久99精品久久只有精品 | 少妇高潮惨叫久久久久久欧美 | 女人十八毛片A级十八女人 女人十八毛片A片久久18 | 国产制服丝袜91在线 | 花房姑娘免费观看8集电视剧高清 | 无码日本精品一区二观看 | 极品美女久久久久久久久久久 | v片免费在线观看 | 亚洲日本精品va中文字幕 | 精品人妻伦九区久久AAA片麻豆 | 亚洲欧美精品久久 | 国产精品久久久久a影院 | 无码国产伦一区二区三区视频 | 性欧美另类 | 色情AB又爽又紧无码网站 | 亚洲 欧美 在线观看 | 亚洲日本成人 | 成年网站未满十八禁毛片免费 | 波多野结衣中文字幕教师 | 无限观看韩国动漫免费观看大全 | 五月天亚洲色图 | 丁香花chengren | 色桃花网| 亚洲欧美日韩精品久久亚洲区 | 国产农村熟妇videos | 国产精品久免费的黄网站 | 日本三级香港三级人妇99 | 成人福利网站 | 手机看片欧美 | 久久久久久久久亚洲 | 国产一区二区三区不卡在线观看 | 韩国三日本三级中文字幕 | 人人看人人爽 | 免费理论片高清在线观看 | 欧美激情久久久久久久大片 | 一级欧美一级日韩片 | 欧美特级特黄a大片免费 | 丁香五月网久久综合 | 波多野结衣一区二区三区在线观看 | 国产电影在免费播放在线观看 | 久热草视频| 水蜜桃视频下载方法 | 波多野结衣中文字幕在线播放 | 国产特黄又粗又硬A片 | 国产人妻久久精品二区三区老狼 | 中文字幕精品在线视频 | 日本乱妇18日本乱妇18p | 8x在线视频com | 小秘书夹得好紧太爽H大肉乳 | 国产成人精品日本亚洲网址 | 999精品国产人妻无码系列久久 | 天堂在线国产 | 亚洲成人黄色在线 | 久久99国产综合精品 | 奇米四色奇米四色444影视盒 | 欧美fxxx性| 亚洲精品无码成人A片在线虐 | 欧美 亚洲 在线播放 | 波多野结衣综合 | 91色综合 | 91字幕| 久久综合老色鬼网站 | 美国毛片视频 | jizz日本在线观看 | 亚洲精品久久久久久久观小说 | 午夜福利三级理论电影 | 天天草综合网 | 午夜伦理一yy4480影院 | 亚洲精品精华液一区 | 亚洲你我色 | 亚洲国产聚色窝 | 澳门一级毛片手机在线看 | 日本一本为道高清视频 | 高潮娇喘抽搐A片无码黄 | 日本高清免费不卡在线播放 | 91黄色影院 | 小泽玛利亚全集快播 | 久久99九九精品免费 | 成人做爰A片免费看视频 | 亚洲欧美中文日韩在线v日本 | 久久99精品久久久久久久不卡 | 99 久久99久久精品免观看 | 粗好大用力好深快点漫画 | 你懂的日韩 | 亚洲无人禁区 | www.三级.com| 国产精品高潮呻吟爱久久AV无码 | 玉女jy荡小说| 日韩在线视频导航 | 精品AV国产一区二区久久小说 | 亚洲精品久久无码AV片软件 | 国产精品国产三级国AV在线观看 | 囯产精品一区二区三区线 | 亚洲精品黄 | 免费真实播放国产乱子伦 | 国产电影一曲二曲三曲 | 丁香婷婷久久大综合 | 无套内谢少妇毛片A片AV | 又硬又粗进去好爽A片66 | 五月天婷婷网亚洲综合在线 | 国产一级二级 | 国产精品扒开腿做爽爽爽A片小 | 免费无码又爽又黄又刺激网站 | 国产国语 毛片高清视频 | 大片免免费观看视频播放器在线观看 | 日韩伦理一区二区三区 | 国产成人毛片毛片久久网 | 强伦姧人妻日韩A片 | 精品人妻无码日本一区二区三区 | 青草青草视频 | 日本黄色一区 | 翁公的粗大挺进我的密道 | 99久久国产免费 - 99久久国产免费 | 日本在线观看高清不卡免v 日本在线观看不卡 | 激情五月综合婷婷 | 免费网站在线观看人数在哪里看的 | 四虎影视在线影院在线观看观看 | 色多多APP福引导入口 | 国产毛片女人高潮叫声 | 麻豆国产一卡二卡三卡不卡 | 亲胸揉胸膜下刺激视频午夜小说 | 一女被两根凶猛挺进动态图 | 欧美91精品 | 午夜毛片在线观看 | 傲慢与偏见电影下载 | 四虎影视国产884a精品亚洲 | 日本三级2019在线观看免费 | 国产免费不卡视频 | 巨肉超污巨黄H文小短文 | 香蕉成熟时 | 2020年最新国产精品正在播放 | 欧美大屁股熟妇BBBBBB | 免费永久观看美女视频网站网址 | 亚欧日韩毛片在线看免费网站 | 成人人观看的免费毛片 | _日韩人妻无码一区二区三区 | 精品久久免费视频 | 九九九久久久 | 巜疯狂的少妇4做爰BD播放 | 97色论 | 香蕉伊人不卡在线看 | 蜜桃日本免费MV免费播放 | 日韩色情图片小说AV一区 | 国产精品看高国产精品不卡 | 久色乳综合思思在线视频 | 永久免费看www色视频 | 总裁高H掹C纯肉小黄书 | jizz免费| 国产一区二区三区四区五在线观看 | 国产视频99 | 女人毛多水多高潮A片 | 亚洲精品久久久久一区二区 | 丁香花在线观看免费观看 | 91导航在线 | 亚洲欧美一级久久精品 | 爽到喷水(H)小说 | 6色成人| 娇妻的呻吟梦颖完整版 | 日日摸夜夜添无码AVA片 | 野外xxx| 波多野结衣在线不卡 | 黄网在线观看 | 777奇米影视四色永久 | 成人精品人成网站 | 中字幕视频在线永久在线 | 纯肉小黄文高H | 免费高清在线影片一区 | 看一级毛片一区二区三区免费 | 精品一区二区在线观看 | 国产手机在线视频 | 国产精品国产成人国产三级 | 99自拍视频在线观看 | 2022国产男人亚洲欧美天堂 | 日本高清VA在线播放 | 色偷偷男人的天堂a v | 国产亚洲精品久久久久5区 国产亚洲精品久久久闺蜜 国产亚洲精品久久久999无毒 | 色偷偷AV老熟女色欲涩爱 | 国内精品乱码卡一卡2卡三卡 | 精品少妇一区二区三区A片 精品日本亚洲一区二区三区 | 国产免费的又黄又爽又色 | 国产激情久久久久影 | 雨宫琴音 qvod| 久久亚洲精品AV成人无码 | 91传媒制片厂果冻有限公司 | 最近韩国日本免费观看免费 | 全国三级网站免费观看 | 鲍鱼网站最新网名2021 | 中文无码人妻在线一区不卡 | 久久99国产精品久久99果冻传媒 | 麻豆传媒新剧国产30部 | 久久久亚洲天堂 | 欧美乱妇无码大片在线观看 | 久久这里精品青草免费 | 男女高潮又爽又黄又无遮挡 | 国产乱子伦视频大全 | 天堂www在线资源 | 日本一区二区三区在线网 | 99视频精品在线 | 亚洲性av免费| bt品色堂 | 伊人大相蕉在线看青青 | 亚洲高清无码在线 视频 | 精品国产乱码久久久久久浪潮小说 | 中文字幕亚洲乱码熟女在线萌芽 | 国产人妻无码鲁丝片久久麻豆 | 天天干天天玩天天操 | 校园刺激全黄H全肉细节文 校园激情人妻古典武侠 | 日本不卡一区二区三区 | 国产最新一区二区三区天堂 | 中文天堂最新版在线网 | 一区二区三区国产亚洲网站 | 亚洲人精品午夜射精日韩 | 狠狠色噜噜狠狠狠狠色综合久 | 日韩视频在线播放 | 久久精品国产亚洲AV麻豆 | 99久久精品无码一区二区毛片 | 欧美精品18videose 性欧美 | 丁香天堂网 | 嗯啊跳蛋啊别舔了啊 | 午夜伦 | 国产成人免费高清在线观看 | 不卡国产00高中生在线视频 | 久久99国产亚洲精品观看 | 精品午夜一区二区三区在线观看 | 国产精品国产三级国产专区不 | 日韩不卡一卡二卡3卡四卡2021免费 | 黄网址在线观看 | 丁香六月深婷婷激情五月 | 精品免费国产一区二区三区四区 | 公粗挺进了我的密道在线播放贝壳 | AV国産精品毛片一区二区网站 | 欧洲最新一卡二卡三卡四卡 | 最近最新中文字幕免费1 | 中国国产成人精品久久 | 亚洲日本在线免费观看 | 国产成人无码AA片免费看 | 国产一区日韩二区欧美三区 | 加勒比国产 | 久久无码人妻国产一区二区 | 欧美顶级少妇做爰HD | 久久久麻豆 | 日日噜噜噜噜人人爽亚洲精品 | 91免费国产精品 | 天天干夜夜操视频 | 免费观看片 | 久久久夜间小视频 | 农村真实夫妇屋内自拍视频 | 亲胸揉胸膜下刺激视频午夜小说 | 伊人久久波多野结衣中文字幕 | 欧产日产国产色情 | 欧美亚洲福利 | 国产AV无码专区亚洲AV久久 | 丰满农村熟女大码 | 色欲天天天综合网 | 最好看最新中文视频在线观看 | 精品毛片| 无码日本邻居大乳人妻在线看 | 四房色播开心网 | 麻豆一区产品精品蜜桃的广告语 | 成人18网址在线观看 | 无码潮喷A片无码高潮小说 无码成A毛片免费 | 我要看免费毛片 | 男女性杂交内射妇女BBWXZ | 成人嘿嘿视频网站在线 | 亚洲国产麻豆 | 国产噜噜噜精品免费 | 丰满少妇又爽又紧又丰满在线观看 | 男人天堂第七色 | 我就是要当着他的面做你 | 99国产在线视频有精品视频 | 中文无码第3页不卡av | 777奇米色| 日日摸夜夜添夜夜添高潮免费A片 | 性色xxx| 99re在线视频观看 | 欧美中出 | 精品影片在线观看的网站 | 日本hdxxxxx护士69bj | 久久久精品国产免费观看同学 | 网站三级 | 91热久久免费频精品99欧美 | 国精产品一二二区传媒公司 | 欧美成人香蕉网在线观看 | 色搜网站 | 国产精品久久久久影院 | 一级做a爱过程免费观看 | 日韩精品免费在线视频 | 日本在线成人 | 亚洲va久久久噜噜噜久久天堂 | 波多野结衣 在线资源观看 波多野结衣 一区二区 | 亚洲性夜色噜噜噜网站2258KK | 欧美日韩视频二区三区 | 伊人久久大香线蕉无码麻豆 | 韩国乱理片中文字幕在线播放 | jizzzz亚洲丰满xxxx | 国产福利91精品一区二区三区 | 成人免费精品网站在线观看影片 | 日韩色在线高清无码 | 亚洲欧美日韩综合久久久久 | 日日天干夜夜狠狠爱 | 国产精品99精品久久免费 | 亚洲免费影院 | 2017av无码免费无线播 | 欧美一级夜夜爽 | 亚洲精品久久精品一区二区 | 日韩精品中文字幕高清在线 | 一区二区亚洲精品国产精华液 | 国产在线观看免费视频软件 | 扬名立万在线播放 | 亚洲精品无码成人A片九色播放 | 天天干天天摸天天操 | 免费在线不卡视频 | 国产激情一区二区三区四区 | 骚妇的水真多让我插她 | 亚洲高清中文字幕免费 | 东京道一本热中文字幕 | 丝瓜草莓秋葵污WWW旧版安卓 | 一集片在线观看 | 天天操天天操天天射 | 亚洲精品久久久久久中女字幕 | 六十路の高齢熟女が中文在线播放 | 国产精品99亚发布 | 好吊色青青青国产在线播放 | 拍戏被CAO翻了H | 久久久国产人妻精品 | 龙之心4:心火之战 | 国产日韩欧美在线播放 | 亚洲乱妇老熟女爽到高潮的片 | aaa国产| 亚洲永久免费视频网站 | 亚洲国产91 | 免费亚洲黄色 | 日本老妇和子乱视频 | 国产麻豆放荡AV剧情演绎 | 99久久精品免费 | 精品国产片一区二区三区 | 韩国色情巜肉欲夜姬 | 日日夜夜天天干 | 抖音app国产污 | 黄色成人在线网站 | 国产aaaaaa | 瑟瑟网| 中文字幕精品视频在线 | 日韩中文字幕视频在线 | 日韩精品在线视频 | 亚洲欧美日韩v中文在线 | jizz亚洲日本 | 最新国模无码国产在线视频 | 国产精品美女自在线观看免费 | 成人69视频在线观看免费 | 无码成人性爽XO视频在线观看 | 国产精品久久久久久久久ktv | 国产午夜男女爽爽爽爽爽 | 亚洲永久视频 | 日本视频免费观看的网站 | 深夜性久久 | 国产成人综合久久 | 午夜精品成人毛片 | 欧美三圾片在线观看 | 性瘾日记 qvod | 亚洲精品aaa | 青青青国产精品手机在线观看 | 日韩ed2k| 最新国模无码国产在线视频 | 春色校园综合网 | 国产精品18久久久久久欧美网址 | 亚洲区欧美日韩综合 | 国产黄色一级毛片 | 日日弄 | 久久亚洲精品国产亚洲老地址 | 日韩18视频在线观看 | 国产极品JK白丝喷白浆免费视频 | 找国产毛片看 | 国产午夜精品理论片 | 久久久精品欧美一区二区免费 | 色哟哟在线网站 | 国产午夜亚洲精品国产 | 强壮公弄得我次次高潮A片强视频 | 激情五月色综合国产精品 | 国产精品高潮呻吟爱久久AV无码 | 日本嫩p | 97任你碰任你摸任你爽 | 海角国精产品一区一区三区糖心 | 欧美操操网 | 亚洲精品无码成人A片蜜臀 亚洲精品无码AV久久久久久小说 | 亚洲综合伦理 | 国产一国产一级毛片古装 | AV色欲AV蜜臀AV久久 | 最近中文字幕免费完整 | 天天躁人人躁人人躁狂躁 | 国产成人精品无缓存在线播放 | 欧美三级经典免费播放 | 麻豆国产人妻欲求不满 | 大伊香蕉在线观看视频 | 极品少妇粉嫩小泬啪啪AV | 娇妻的呻吟梦颖完整版 | 美女逼逼图片 | BL文高H强交| 成熟妇人A片免费看网站 | 日本一视频一区视频二区 | 国产做A爰片久久毛片A片软件 | 2020中文字幕乱码免费 | 久久婷婷国产麻豆91天堂 | 免费三级现频在线观看免费 | 野狼社区在线 | 四虎影视在线观看2413 | 欧美日本日韩aⅴ在线视频 欧美日本日韩 | 久久综合结合久久很很很97色 | 免费国产成人高清在线观看网站 | 亚洲h视频在线 | 美女扒开腿让男人桶爽30分钟 | 男人晚上适合偷偷看的污污 | ab色情短片 | 深爱五月开心网亚洲综合 | 777片理伦片在线观看 | 狠狠躁日日躁夜夜躁A片小说 | 在线免费观看毛片 | 国产精品日本无码久久一 | 国产一国产一区秋霞在线观看 | 国产浮力草草影院CCYY | 亚洲.欧美.中文字幕在线观看 | 波多野结衣免费线在线 | 国产国产东北刺激毛片对白 | 成人网zhan | 免费黄色电影观看 | 国产精品资源在线观看网站 | 日本免费一曲二曲三曲 | 青青草视频app在线播放99 | 成全在线观看免费播放 | 91插插插网站 | 欧美中文字幕在线 | 天天舔天天爱 | 国产视频一二三区 | 翁熄乩伦小说翁熄性放纵 | 一女多男np高辣文h 一女多男nP现代高H | 亚洲精品做爰无码片 | 国产精品色情一区二区三区 | 亚洲精品动漫免费二区 | 亚洲最大日夜无码中文字幕 | 综合人妻久久一区二区精品 | 亚洲国产成人久久综合一区 | 日韩伦理电影秋霞影院 | 欧美性精品 | 香蕉伊人伊在线播放av | 彩色h中文漫画 | 欧美成人在线网站 | 欧美精品免费xxxxx视频 | 最新中文字幕在线视频 | 小日本在线观看免费视频 | 香蕉视频97 | 国内精品久久久久尤物 | 欧美精| 我是唱作人第二季 | 五月天婷婷在线视频 | 欧美一级中文字幕 | 色婷婷五月色综合小说 | 色影| 亚欧有色在线观看免费版高清 | 国产在线观看免费观看不卡 | 欧美一区二区三区红桃小说 | 青青草一区 | 亚洲阿v天堂在线 | 久久天天躁夜夜躁狠狠85麻豆 | 无码人妻丰满熟妇啪啪区日韩久久 | 老司机福利在线视频 | 伊人蕉久75影院在线播放 | 一个人看的免费观看日本电影 | 91视频com | 最近韩国日本免费高清观看直播 | 免费大片黄在线观看视频 | 欧美日韩国产一区二区三区 | 欧美日韩高清不卡一区二区三区 | 好满好深好撑好涨h | 香港三级日本三级韩国三 | 九九九九在线精品免费视频 | 国产又色又粗又黄又爽免费 | 狠狠撸的网站首页 | 韩国黄色网址 | 欧美乱妇狂野欧美在线视频 | 亚洲 日韩 色 图网站 | 中文字幕色视频 | 一个色综合亚洲色综合 | 欧美韩国日本 | 激情6月丁香婷婷色综合 | 欧洲成人 | 簧片视频在线观看 | 欧美视频在线观看免费观 | 亚洲 天堂 国产在线播放 | 中央工作组赴宜春督导锂矿开采 | 99精品视频免费观看 | 美日韩在线视频 | 美女被抽插舔B到哭内射视频免费 | 亚洲 自拍 另类 欧美 综合 | 高潮娇喘抽搐A片无码黄 | 久久精品亚洲一区二区三区浴池 | 在线看片中文字幕 | 欧区一欧区二欧区三免费 | 国产一级一片免费播放视频 | 天天干天天摸天天操 | 趴在办公室被老板们C | 国产精品扒开腿做爽爽爽日本无码 | 国产大片线上免费观看 | 国产成人亚洲欧美激情 | 欧美在线观看 cao38 | 亚洲高清在线不卡中文字幕网 | 色网站在线观看 | 影音先锋中文无码一区 | 久久福利网站 | 欧美又硬又粗进去好爽A片 欧美在线视频一区 | 国产精品久久久久久人妻香蕉 | 国产国产人精品视频69 | 91黄色影院 | 么公又大又硬又粗又长 | 国产国语高清在线视频二区 | 日本中文字幕巨大的乳专区 | 国内外成人色情视频 | 欧美色欧美亚洲高清图片 | 国产精品久久人妻互换 | 永久免费观看国产裸体美女 | 免费网站观看 | 国产一码二码免费观看 | 精品国产综合成人亚洲区 | 欧美 亚洲 中文 国产 综合 | 国产人妻丰满熟妇嗷嗷叫 | 少妇毛又黑又浓水又多A片 少妇内射高潮福利炮 | 色偷偷亚洲女人天堂观看欧 | www.黄色免费 | 波野多结衣在线 | 国产高清精品入口91 | 久久久久久国产精品免费免费 | 亚洲AV国产成人精品区三上悠亚 | 亚洲色琪琪永久原网站 | 眉间雪电视剧全集在线观看 | zzz动漫网在线观看 zzzzxxxx日本 | 亚洲欧美成人无码久久久 | 亚洲最大日夜无码中文字幕 | 99蜜桃臀久久久欧美精品 | 免费观看黄页网站 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠扒开双腿 | 公和我做爽死我了A片N | 影音先锋av色情撸啊撸 | 91久色视频 | 男人晚上适合偷偷看的污污 | 窝窝视频成人影院午夜在线 | 国产成人精品日本亚洲18图 | 国产成人A片免费观看 | 国产黄色大全 | 欧美日韩精品一区二区三区高清视频 | 日本毛片久久国产精品 | 午夜精品视频在线观看 | a色毛片免费视频 | 琪琪色原网20岁以下热热色原网站 | 日韩高清不卡在线 | 欧美视频在线观看网站 | 色-情-乱-交-二三区视频 | 毛片自拍| 最新国产精品精品视频 | 日本又色又爽又黄又免费网站 | 免费看一区无码无A片 | 真实国产乱子伦视频对白 | 日韩视频高清免费看 | 国产伦理一区 | 欧美黑人性受xxxx精品 | 欧美丝袜女同 | 三妻四妾高清完整版在线观看免费 | 六月丁香婷婷综合 | 亚洲精品卡一卡2卡3卡4卡 | 午夜福利理论片高清在线 | 久久夜夜肉肉热热日日 | 天堂中文资源在线8 | 成人18网站| 亚洲色婷婷久久精品AV蜜桃小说 | 果冻传媒 天美 麻豆 | 又爽又色少妇视频 | www.三级.com | 国产精品亚洲精品久久品 | 任你搞视频这里只有精品 | 国产欧美日韩亚洲第一页 | 日本大片免a费观看视频 | 国产第一页浮力影院草草影视 | 把娇妻借给朋友泄欲4 | 国产黄大片在线观看 | caoporm国产精品视频免费 | 欧美一区二区三区免费看 | 欧美激情一区二区三区 | 最近最新中文字幕完整版免费高清 | jizz全欧美| 亚洲精品久久久久久久蜜臀老牛 | 抖音无限次短视频老司机APP | 久久99AV无色码人妻蜜柚 | 他用舌头给我高潮喷水在线 | 妖精视频一区二区三区 | 久久精品这里是免费国产 | 中国黄色www| 巨大黑人极品videos中国 | 日本三级韩国三级欧美三级 | 婷婷丁香五月激情综合在线 | 精品AV亚洲乱码一区二区 | 午夜视频在线免费 | 亚洲黄色成人 | 国产一区高清视频 | 免费看18污黄 | 粉嫩被粗大进进出出视频 | 午夜网站在线观看免费网址免费 | 中文字幕日本在线观看 | 99热综合在线 | 污肉高H校园调教 | 男子扒开美女尿口做羞羞的事 | 伊人成人网| 麻豆传传媒久久久爱 | 人妻天天爽夜夜爽三区麻豆A片 | 伊人22综合| 国产精品不卡在线观看 | 曰本女人一级毛片看一级毛 | 无码中文字幕无码一区日本 | 美果tv免费在线观看电视剧 | 日本A片把舌头伸进粉嫩视频 | 欧美 亚洲 中文 国产 综合 | 欧美日韩在线视频观看 | 国产视频网站在线观看 | 影音先锋资源 av | 亚洲AV无码无限在线观看不卡 | 天天操天天艹 | 最近中文字幕高清中文字幕MV | 免费观看黄A片在线观看 | 国产福利在 线观看视频 | 成年黄网站色大免费全看 | 美国一级黄色毛片 | 午夜精品视频在线观看 | av综合网| 久久多人视频聊天 | 超碰97人人做人人爱少妇 | 亚洲国产成人超福利久久精品 | 欧美午夜春性猛交xxxx | 理论片87福利理论电影 | 免费xxxx| 日本A级做爰午夜免费视频 日本A片成人片免费视频生活片 | 水中色av综合 | 精品AV国产一区二区三区 | 久久精品人妻无码一区二区三区盗 | 久草日B视频一二三区 | jizzjizzjizzjizz日本 | 最近中文字幕在线中文视频 | ucjizz成人免费播放软件 | 国产一级视频久久 | 国产午夜视频在线观看网站 | 国产免费啪嗒啪嗒视频看看 | 午夜啪啪剧场 | 97国产精华最好 | 精品一区二区三区波多野结衣 | 日韩欧美国产中文字幕 | 精品久久久久不卡无毒 | 久久国产精品久久国产片 | 亚洲国产精品成人精品A片 亚洲国产高清在线观看视频 | 欧美极品xxxxⅹ另类 | 亚洲欧美视频 国内自拍 | 美女视频大全视频a免费九 美女三级毛片 | 2022免费国产精品福利在线 | 色哟哟在线网站 | 亚洲国产毛片aaaaa无费看 | chinese国产人妖网站视频 | 成人v | 免费在线观看成人电影 | 18成网站www在线观看 | 夜夜骑夜夜操 | 给我一个可以免费看片的WWW | 天堂网在线资源 | 桃色AV久久无码线观看 | 国内精品偷拍在线观看 | 中国人xxxxbbbb国产 | 五月婷婷综合在线 | 一起探恋爱综艺在线观看第七期 | 一二三区乱码不卡手机版 | 被黑人20厘米强交 | 97视频精品 | 秋霞在线观看视频一区二区三区 | 欧美综合图区亚洲综合图区69 | 亚洲欧美日本国产 | 亚洲大码熟女在线 | 欧美精品一区二区三区在线播放 | 中文有码中文字幕免费视频 | 把腿张开JI巴CAO死你H | 色妺妺网 | 色宅男午夜电影网站 | 久久这里只精品热在线99 | 亚洲天堂最新网址 | 亚洲 欧美 日本 国产 高清 | 欧美一区二区三区在线视频 | videos欧美成人| 久久草在线视频 | 久播播快播| 色网站在线视频 | 一区二区三区毛AAAA片特级 | 2019久久久高清456 | 内射白浆一区二区在线观看 | 蜜桃麻豆WWW久久国产人妻 | 亚洲精品欧美日韩 | jizz国产| 亚洲 欧美 小说 图片 视频 | 国产极品JK白丝玉足喷白浆 | www.男同| 亚洲最大成人综合网720P | 国产高清不卡一区二区三区 | 日韩欧美三级视频 | 亚洲欧美自拍色综合图 | 亚洲电影在线观看高清影院 | 色偷偷资源 | 天天爱天天操天天干 | 日本玖玖视频 | 自拍亚洲国产 | 中国久久 | 水蜜桃传媒科技有限公司网站 | 日韩无人区码卡二卡3卡4卡介绍 | 乱公和我做爽死我视频 | 久久精品无码欧美成人一区 | 国产AV电影区二区三区曰曰骚网 | 国产精品无卡无在线播放 | 真实国产熟睡乱子伦视频 | 国产人妻XXXX精品HD电影 | 最新精品视频2019在线视频 | 少妇人妻好深太紧了A片乚 少妇人妻千子深太紧了A片 | 日韩一级一欧美一级国产 | 欧美亅性猛交内射 | 国产一级久久免费特黄 | 高清对白精彩国产国语 | 日本免费在线一区 | 伊人成综合网伊人222 | 国产精品69人妻无码久久 | 99久久国产露脸精品竹菊传煤 | 精品无码久久久久久久久 | 亚洲永久免费视频 | 2018国产大陆天天弄 | 青草草在线视频 | 九九这里只精品视在线99 | 一级做a爰性色毛片免费 | 人成乱码一卡二卡三四卡无卡六卡 | 国产一级特黄高清免费大片dvd | 最新日韩欧美不卡一二三区 | 久久国产热视频 | 蜜桃AV麻豆AV果冻传媒 | 久久神马影院 | 日韩欧美一区二区三区免费看 | 色人阁26uuu 色情图插插插 | 少爷湿润粗大跪趴含BL | 天天综合天天 | 久久久无码精品国产人妻 | 成人在线观看免费视频 | 三级黄色片网站 | 日日摸人人拍人人澡 | 国产人妻换人妻仑乱电影 | 日本日本熟妇中文在线视频 | 中文字幕在线视频网 | 蜜桃日本免费MV免费播放 | 国产手机在线国内精品 | 天天宗合网| 久久99精品国产免费观看 | 国产人妻精品一区二区三区不卡 | 2024久久精品免费观看 | 嗯好爽快点插我视频在线播放 | 69性视频 | 五月激激激综合网色播胖胖 | 品色成人网 | 西西人体系 |