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

金喜正规买球

Qt網(wǎng)格組件DataGrid:如何在網(wǎng)格中輸入新行

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

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

# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>

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

點(diǎn)擊下載QtitanDataGrid最新試用版

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

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


代碼如下:

.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

點(diǎn)擊獲取更多文章教程!現(xiàn)在立刻下載Qt免費(fèi)試用吧!更多Qt類開(kāi)發(fā)工具QtitanRibbonQtitanChartQtitanNavigationQtitanDockingQtitanDataGrid在線訂購(gòu)現(xiàn)直降1000元,歡迎咨詢慧都獲取更多優(yōu)惠>>

工具推薦:

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

標(biāo)簽:

本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn

文章轉(zhuǎn)載自:

為你推薦

掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
欧美日韩在线观看不卡一 | 欧美午夜网 | 亚洲人成亚洲精品 | 动漫精品中文字幕制服一区 | 国产欧美日本亚洲精品五区 | 秋霞电影午夜在线观看 | 欧美影视三级亚洲 | 亚洲三级网站 | 欧美国产日韩亚洲精品 | 精品一区在线观看 | 国语自产拍在线视频中文 | 色老头在线永久免费视频 | 国产又色又爽又剌激的视频 | 国产精品日韩欧 | 欧美一级欧美一级高清 | 99热在线免费观看 | 免费观看女 | 国产日产欧美一区二区三区 | 国产a级三级三级三级 | 精品三级在线观看 | а√天堂网www在线搜索 | 国产精品综合影院在线观看 | 国产日韩a | 国产一二片视频免费观看 | 九草免费在线观看 | 国产高清一区二区三区免费视频 | 国产专区一va亚洲v天堂 | 国产伦理一区二区三区在线观看 | 国产一级特| 国产精品天干天干综合网 | 红桃www.ht84pp成人 | 国产一级特黄a大片免费 | 国产日韩欧美小视频 | 国语自产精品视频在视频 | 欧美伦理一区二区三区 | 日本手机在线视频 | 国产丝袜视频在线 | 国产99久9在线视频传媒 | 九九国产精品国产精选之刘婷野 | 韩国欧美一区二区 | 九1热综合这里都是真品 | 欧美性videos高清 | 国产一级自拍亚洲精品在线看 | 蜜桃国产在线观看网址 | 日本三级a毛黄特级 | 精品国夜夜区二一区三区 | 欧美日韩在线成人 | 4399日本韩国电影高清完 | 一个人高 | 欧美第27页网站在线观看 | 老司机永久免费视频网站 | 国产婷婷一区二区三区 | 91还看在线国产精品 | 国产在视频线精品视频二代 | 欧洲精品码一区二区三区免费看 | 丰满大码熟女在线播放 | 欧美性xxxx狂欢老少配 | 99热这里只有 | 国产激情综合在线看 | 国产精品日韩欧美在线第3页 | 国产精品亚洲欧美大片在线观看 | 午夜性爽视频男人的天堂 | 日韩伦理电影在线观看 | 女人与公驹交酡全过程 | 国色天香精品亚洲精品 | 日韩免费在线播放一区二区三区 | 国产色综合天天综合网 | 日本视频中文字幕 | 国产黄a三级三级看三级 | 国产精品欧美一区二区三区 | 国产免费国产在线精品一区 | 免费电视剧 | 精品欧美一区二区vr | 日韩一区二区三区四区 | 初爱视频教程韩国 | 中文字幕永久在线第38 | 182tv精品视频在线播放 | 精品一区二区不卡国产 | 欧美日本一区高清不卡视频 | 日韩欧美国产一级免费 | 三区在线观看不卡 | 亚洲中文 | a级国产乱理论片在线观看ai | 中文字字幕在线中文乱码电影 | 天天咱天咱天干天谢 | 国产一区欧美一区二区 | 色琪琪原网站亚洲香蕉 | 搡8o老女人老妇人老熟 | 成人亚洲欧美丁香在线观看 | 精品国产乱码aaa一区二区 | 91中文字幕永久在线人妖 | 国产大片91精品免费看3 | 国产小视频福利在线观看高清完整 | 欧美日韩国产va在线观看免费 | 国产老熟女乱子一区二区 | 动漫精品无 | 91sese| 欧美性爱视频手机在线免费播放 | 国产女同专区在线观看 | 秋霞影院伦理在线看 | 欧美不卡一区二区 | 欧日韩在线不卡视频 | 国自产拍视频 | 日本一区不卡在线观看 | 精品国产人成亚洲区 | 国产在线视频不卡 | 亚洲综合色成 | 国产精品白拍三级 | 精品国产99国产精偷国产黄在线 | 精品国产自在现线免费观看 | 亚洲日产乱码一二三区别 | 日韩在线视频不卡一区二区三 | 香港三级理论在 | 夜鲁夜鲁很鲁在线视频视频 | 精品国产一区二区三 | 国产男女乱婬真视频免 | 91精品全国免费观看青青 | 亚洲欧洲自拍偷线高清一区二区 | 国产欧美日本韩国高清 | 日本高清免费观看 | 中文欧美亚洲日 | 国产盗摄一区二 | 日日插人人插天天插 | 日韩欧美精品一区二区三区 | 国产精品va在线播放我和闺蜜 | 精品国产电影在线 | 热搜电视剧在线观 | 国产高清免费在线观看 | 亚洲人成小说网站色 | 黑人欧美老 | 国产亚洲视频中文字幕在线视频 | 欧美a欧美乱码一 | 7799国产大片免费看 | 日本欧美视频在线观看三区 | 亚洲三级一区二区在线观看 | 日韩欧美一级一中文字幕 | 亚洲色大成网站www在线观看 | 在线免费视频 | 国产精品福利午夜在线观看 | 国产日产欧美日韩一区二区 | 成全视频在线观看免费观看 | 国产片欧美精品中文字幕全 | 成人免费观看做爰视频ⅹxx | 欧美日韩一区二区三区视频在线 | 亚洲精品1区2区3区4区 | 欧美精品亚洲精品 | 成人影片在线官网 | 国产精品日本一区二区在线播放 | 国产亚洲a∨片在线观看 | 91精品专区国产在线观看高清 | 欧美日韩一区精品高免费专区 | 亚洲国语中文字幕理论片 | 日本免费一区二区在线看片 | 国内精品自产拍在线观看 | 欧美人体视频一区二 | 国产性夜夜春夜夜爽 | 亚洲精品欧美精品日韩精品 | 99人精品福利在线观看 | 精品国内自产拍在线视频 | 精品亚洲国 | 中文字幕在线第46页 | 国产精品一区二区三 | 成人影视在线观看 | 韩国一区二 | 亚洲精品影院一区二区 | 欧美黑人巨大videos精品 | 蜜桃综合视频 | 色哟哟网站入口在线观看视频 | 国产女手机 | 国产精品福利资源在线 | 国产亚洲一卡2卡3卡四卡网站 | 国产日韩欧美另类重口 | 成在线人永久免费播放视频 | 日韩欧美国产中文一区 | 欧美韩日一区二区图区 | 日韩四色在线视频观看网站 | 国产精彩视频在线观看97网 | 国产精品亚洲玖玖玖在线 | 91尤物国产 | 国产亚洲精品a在线观看app | 日本宅男欧美国产日韩 | 欧美日本国产综合在线 | 国产午夜福利精品一 | 亚洲欧洲中文字幕免费看 | 国产一卡2卡3卡4卡国 | 男人在线天堂 | 国产日本欧美一区二区竹菊 | 青青草自产拍国产精品 | 一区二区三区蜜桃 | 熟女视频一区二区在线观看 | 日本免费最新高清不卡视频 | 中文字幕精品亚洲无线码一区应 | 日本精品一区二区三区 | 国产超级va在线播放 | 国产亚洲高清在线精品99 | 国产新人36| 国内性色精品视频 | 中文在线免费视频 | 99这里只有精品免费视频 | 国产精品综合视频一区二区 | 在线可以看| 免费三级在线观看中文字幕 | 好看的中文字幕aⅴ在线视频 | 国产精品永久免费自在线观看 | 男人猛躁进女人免费 | 国产精品日本一区二区在线播 | 不卡高清 | 韩日国产精品一区二区三区 | 97ssee| 亚洲aⅴ日韩一区 | 亚州一级在线播放 | yy8098三级国语 | 欧美性一级中文字幕18页 | 国产一区二区在线视频观看 | 国产精品v欧美精品v日韩 | 国产性猛交╳xxx乱大交 | 亚洲人成电影院在线观看 | 9191精品国产免费一区 | 久热官网 | 国产亚洲欧美日韩精品一区二区 | 丰满多毛的大隂户视频 | 亚洲s色大片在线观看 | 中文字幕不卡免费高清视频 | 免费国产h视频在 | 欧美乱妇激情在线播 | 欧美在线直播 | 精品国产午夜精华 | 91午夜福利国产在线观看 | 97一区二区国产好的精华液 | 区在线播放| 成全影视 | 国产日韩在线 | 欧美精品v | 91日韩精品一区二区三区 | 91看片淫黄大片在看 | 日韩在线精品成人v在线 | 国产免费午夜福利在线播放92 | 欧美亚洲人成在线综合 | 九一国产| 韩国午夜三级理论 | 亚洲日本中 | 国产精品亚洲综合欧美日韩第 | 欧美日韩电影在线观看 | 日本一级婬片a | 精品露脸国产偷人 | 国内老熟夫对白hdxxxx | 日韩欧美国产偷亚洲清高 | 91日韩精品一区二区三区 | 精品亚洲国产 | 欧美日韩亚洲中文字幕吗 | 成全免费高清动漫电影 | 国产精品推荐制服丝袜页 | 国产普通话对白视频二区 | 国产不卡一区二区在线观看视频 | 亚洲国产一区在线观看视频 | 99久热国产 | 午夜成人激情视频 | 久欠免费看 | 国产色爽女免费视频 | 欧美日韩高清免费观看 | 男人亚洲天堂日日夜夜 | 免费人成视在线观看不卡 | 国产精品外围在线观看 | 国产高清一区二区三区四区 | 羞羞影院午夜男女爽爽影 | 老司机67194精品线观看 | 精品国精品国产国产 | 我被两个老外抱着高爽翻了 | 国产亚洲精品一二三区 | 亚洲成年人在线观看 | 国产日视频在线观看 | 国产玉足sm足控脚交视频 | 久热精品视频在线播放 | 国产在线观看精品一区二区三区 | 夜夜未满十八勿进的爽爽影院 | 国产亚洲精品精品国产亚洲综合l | 亚洲欧美日韩中文字幕在线一 | 国产午夜福利在线看 | 真实乱视频国产免费观看 | 免费国产h视频在 | 国产最新在线观看 | 伊人www22综合色 | 欧美精品国产日韩综合在 | 欧洲色中文字 | 亚洲美女高| 不卡中文字幕系 | 姝姝窝人体ww | 国产乱人视频在 | 日韩精品国产一区二区在线 | 亚洲综合激情五月丁香六月 | 91精品久 | 日本免费新区 | 欧美性猛交xxxx | 尤物在线精品视频 | 欧美香蕉大胸在线视频观看 | 国产精品素人福利 | 亚洲人成电影手机在线播放 | 欧美日本一区激情视频 | 亚洲天堂偷拍日韩中文字 | 在线观看亚洲精品福利片 | 国产亚洲人成网站在线观看不卡 | 国产福利一区二区三区在线 | 午夜a级理论片在线播放可米 | 五月婷婷深爱 | 亚洲色熟女图激情另类图区 | 91一区二区视频 | 精品福利一区二区三区免费视频 | 欧美精品免费专区在线观看 | 综合一区| 欧美精品免费一区欧 | 免费观看电视剧全集在线播放 | 日韩熟女精品影院 | 亚洲国产精品一区二区九九 | 每日更新国产精品视频 | 精品一区二区三区高清免费观看 | 日本黄页网址在线看免费不卡 | 成人永久福 | 日本一区二区三区四区不卡 | 91尤物国产网红尤物福利 | 国产做a| 91精品国产亚洲爽啪在线影院 | 国产一区精品普通话对白 | 亚洲视频免费在线播放 | 亚洲无线码一区国产欧美国日产 | 欧美五级在线观看视频播放 | 黑人巨大精品欧美视频一区 | 免费在线追剧 | 欧洲精品第一国产综合 | 国产欧美日韩综合精品一区二 | 免费在线观看国 | 国产一卡二卡三卡四卡视频版 | 日本淫秽视频在线 | 日韩综合一二三区视 | 九九影院 | 欧美色aⅴ欧美综合色 | 国产乱子精品免费视观看片 | 免费视频精品一区二区三区 | 亚洲日韩视频高清 | 国产在线精品一区二区三区不卡 | 欧美视频在线观看第一页 | 国产精品臀控福利在线观看 | 国产伦一区二区三区免费 | 在线国产视频 | 一区二三国产好的精华液 | 国产拗女一区二区三区 | 国产丝袜在线精品丝袜不卡 | 国产不卡一区二区免费视频 | 玖玖资源中文字幕一区二 | 日日噜噜夜夜狠狠视频无 | 国产在线欧美观看 | 国产午夜理 | 精品国产亚| 精品亚洲中文字幕 | 日韩欧美综合在线制服 | 国产精品第 | 精品福利一区二区视频 | 成人欧美s视频在线观看 | 国产盗摄xxxx视频x | 男男做肉爱视频在线观看 | 天堂中文在线资源 | 影院手机电影在线 | 亚洲经典一区二区三区 | 日本一本专区一区二区三区 | 欧美v牲拘在 | 日本加勒比在线 | 中文字幕国产日韩 | 国内精品免费久 | 欧美一级做a爱高清免费观看 | 国产极品美女一区二区三区 | 性色aⅴ按摩精品在线 | 国产日韩影院在线 | 欧美国产日韩在线播放成人 | 精品国产午夜 | 亚洲日本 | 免费aⅴ大片在线观看 | 区四区在线 | 国产精品欧美激情第21页 | 欧美日韩一区二区三区视频播放 | 国产高清一区二区三区视频 | 自拍欧美在线综合另类 | 国产思思99re99在线观看 | 国产综合网 | 国产在线成人精 | 三级国产国语三级在线2 | 亚洲精品第一国产综合精品 | 国产中文字幕视频在线观看 | 国产网友自拍一区 | 美女在线观看永久免费网站 | 国产口爆| 国内91精 | 韩国三级在线不 | 国产免费人成视频网站在线看 | 国产精品亚洲二线在线播放 | 日本一区不卡在线 | 日本阿v免费观看视频 | 好男人www社区| 亚洲欧美日韩中文字幕一区 | 美女aⅴ高清电影在线观看 任你躁在线精 | 欧美日韩免费精品一区二区在线 | 国内外精品激情刺激在线 | 日本不卡中文字幕一区二区 | 欧美日韩一区二区综合 | 欧美交换乱理伦 | 欧美午夜不卡在线观看最新 | 欧美日韩国产一区 | 成人福利app导航秘 国产在线观看色 | 日本1区在线观看 | 欧美另类69| 国产真实乱在线更新 | 一区二区视频在线观看 | 这里只有精品在线观看视频 | 日本一区二区高清片片 | 国产黄大片在线观看视频 | 亚洲日韩天堂在线 | 亚洲国产精品一区二区九九 | 亚洲人成网 | 欧美日韩亚洲1区2区 | 午夜a级理论片在线播放 | 扒开她的| 国内外成人免费视频 | 欧美日韩中文在线视频 | 国产国产精品 | 亚洲高清一区二区三区不卡 | 日韩成人国产精品视频 | 不卡电影在 | 中文区永久区乱码六区 | 国产精品高清m3u8在线播放 | 亚洲精品一品区二品区三区 | 欧美一区二区三区精品视频在 | 国产精品碰碰现在自在拍 | 日本免费人成视频在线观看 | 性生交生活影碟 | 中文字幕在 | 国产日产欧美一区二区 | 国产农村乱辈在线观看 | 99r在线精品视频在线播放 | 国产精品一区二区在线观看免费 | 国产水手服19禁在线视频网站 | 国产国产亚洲高清 | 国产精品卡2卡三卡4卡 | 成人性生交大片在线观看 | 性猛交ⅹxxx富婆视频 | 免费人成视频在线观看网站 | 国产添下面视频全过程教程 | 日韩精品综合丝袜制服 | 国产欧美高清视频 | 日产精品卡二卡三卡四卡乱码视频 | 日韩一区二区三区免费播放 | 菠萝视频在线完整版免费观看 | 伦理午夜| 国产精品a成v人在线播放 | 精品动漫区第一页在线 | 天天色成人免費 | 日韩美女黄大片在线观看 | 国内精品视频一区二区三区八戒 | 成人乱码一区二区三区不卡视频 | 亚洲欧美曝精品手机观看 | 国产国拍亚洲精品午夜不嘿嘿 | 色一情一伦一区二区三 | 欧美午夜理伦三级在线 | 免费观看亚洲 | www一区二区乱码www | 日产国产一区二区 | 国产日韩亚洲不卡高清在线观看 | 337p日本大 | 免费国产va在线观看中文字 | 国产乱码1卡二卡3卡四卡5 | 日本xx高清视频免费 | 国产精选91原创视频 | 777米奇| 九七九七色伦在线影院 | 欧美视频精品一区二区 | 午夜人成影视免费 | 国产学生情侣偷 | 欧美a级情欲片在线观看免费网站 | 欧美一区| 国产又粗又硬又大爽黄老大爷视 | 欧美日本免费一区二区三区 | 国产网站在线播放 | 精品日本亚洲18 | 初爱免费视 | 久产久精国产大片 | 好硬好大 | 日本黄大片在线观看 | 欧美激情一区二区三级高清视频 | 富婆按摩一区二区三区 | 国产午夜福利院757视频 | 3571色院影一区二区三区 | 爽妇综合网 | 尤物视频官网 | 欧美在线看片a免费观看 | 色一情一乱一交一二三区 | 欧美日韩国产中文字幕 | 九九国产精品国产精选之刘婷野 | 色橹橹欧美在线观看视频高 | 91精品国产自产 | 欧美又色又爽又黄刺激免 | 日韩视频中文字幕视频一 | 国产欧美一区二区精品久 | 蜜桃视频一区二区在线观看 | 亚洲综合第 | 呦交小u女国产 | 亚洲中文字幕精品一区二区三区 | 国产男女高清视频m免费 | 国产一级免费在线观看 | 91精品最 | 国产欧美网址 | 国产乡下三级全黄三级bd | 成人国产一区二区三区精品一 | 午夜三级a三级三点在线观看 | 国产精品成人h片在线 | 国产欧美日韩综合港台 | 国产日韩免费视频在线观看 | 亚洲国产精品大秀在线播放 | 日本乱码伦视频中文字 | 午夜日b视频 | 国产又色又爽又黄又刺激的网站 | 成人午夜视频精品一区 | 日本最新二区三区更新完 | 日韩在线观看完整版电影 | 私人电影官网 | 日韩精品一区在线播放精品 | 国产资源精品一区二区免费 | 欧美日韩精品一区二区三区 | 欧美日韩国产高清精卡 | 阳光宅男影院完 | 国产午夜福利100集发布 | 中文字字幕在线精品乱码高清 | 日韩新片 | 欧美日韩一区二区三区不卡在线 | 欧美伦理 | 51国产愉自视频区视频 | 国产在线一卡2卡三卡4卡免费 | 亚洲熟肉一区二区三区 | 欧美国产精品免费观看 | 国产福利在 | 成人污污污www网站免费丝瓜 | 精品国产一区二区在线观看 | 夫妇交换性4p中文字幕 | 日本高清在线观看www色 | 国产偷窥成熟女精品视频 | 国产高清精品二区 | 国产精品亚洲欧美 | 精品熟女中文字幕 | 1769国内精品视频在线 | 国产95视频精品免费 | 亚洲欧洲日韩综合色天使 | 1024在线播放 | 亚洲小说第一区 | 国产精品不卡在线观看的a站 | 无人在线观看视频高清播放 | 国产网站免费看 | 性生生活 | 青青青国产在线观看资源 | 国产亚洲欧美日韩国产 | 午夜亚洲影院 | 免费国产在线精品一区二区 | 国产午夜不卡 | 久爱视频2025午夜视频 | 欧美一卡二卡 | 99久9久免费国产动漫 | 99精品国产高清一区二区 | 国产在线一区二区综合免费视频 | 亚洲永久网址在 | 欧美乱码精品一区二区三 | 精品国产午夜 | 久青青视频精品免费观看 | 亚洲色国产观看在线另类 | 日韩一区二区免费看 | 亚洲欧美日韩亚 | 日本按摩a级中文片免费 | 最新一区二区激情不卡视频 | 日韩伦理剧在线观看 | 伊伊人成亚洲综合人网7777 | 国产高清视频一区二区在线观看 | 亚洲国产精品自在拍在线播放 | 狼群影院视频在线观看高清版 | 国内自产 | 91国语精品自产拍在线观看 | 欧美国产在线精品一区二区 | 日韩亚洲高清 | 国产99日韩精品第一页 | 成人性爱视频在线观看 | 国产精彩视频在线观看91 | 中国在线观看免费国语版 | 日韩视频中文字幕视频一区 | 九七影院| 大陆精大陆国产国语精品 | 欧美午夜不卡在线观看最新 | 精品成人免费 | 国产高清亚洲免费片 | 欧美伦理一区二区三区 | 三级三级三级a级全黄三电影 | 午夜欧美性视频在线播放 | 国产精品乱码一区二区视频 | 亚洲综合激情 | 欧美激情∨在线视频播放 | 欧美日韩国产一区二区三 | 日本免费一级手机看片一区二区 | 国产精品va在线观看超清 | 大伊香蕉精品视频在线观看 | 亚洲成a人片在线观看网站 亚洲国产精品一在线 | 韩国三级bd高清中字 | 国产高清免费在线观看精品 | 国产精品国色综 | 91精品国产手机在 | 亚洲精品成人一区二区aⅴ 精品欧美一区二区在线观看 | 国产在线一区二区三区不卡 | 成年奭片免费观看午夜 | 国产一区二区在免费观看 | 日韩精品在线不卡一区二区 | 国产香蕉97碰碰视频免费看 | 4k影视资源免费在线观看 | 亚洲国产99在线精品一区 | 国产国语一级 | 国产网站一区二 | 欧美日韩中文字幕在线播放 | 亚洲中文精品乱伦 | 91免费福利精品国产 | 日日夜人人澡人人澡人人看免 | 国产人妖在线 | 91精品视频在线 | 国产女明星专区视频在线播放 | 国产日本欧美一区二区第一页 | 综合在线观看视频国产 | 强伦轩一区二区三区四区播放方式 | 亚精一区二 | 公交车被两根粗 | 国产精品推荐制服丝袜页 | 99精品国产99久 | 国产伦精品一区二区三区精品 | 国产午夜场免费视频在线播放 | 精品偷自拍另类在线观看 | 国产伦理一区的二区三区四区 | 国产精品国语刺激对白在线观看 | 日韩在线精品一区二区三区 | 免费国产网站在线观看不卡 | 日韩精品亚洲成本人专区电影 | 日韩精品加勒比在线观看 | 人在线播放乱妇# | 国产欧美日韩一区二区三区蜜桃 | 男女超爽视频免费播放 | 一区二区免费在线观 | 日韩欧美中文字幕在线视频 | 欧美极品一区二区三区在线观看 | 欧美一卡2卡3卡4卡国色天香 | 办公室第1季9集在线观看 | 妖精视频免费 | 国产黑色丝 | 国产乱子经典视频在线 | 国产精品久线在线观看 | 国产办公室三 | 91部国产精品免费观看 | 欧美激情视频在线播放全球共享 | 国产精品免费视频一区二区三 | 国产精品人一成在线观看 | 国产欧美日韩午夜在线观看 | 成人欧美激情亚洲日韩蜜臀 | 丝袜美腿一区二区三区 | 国产91白丝在| 揄拍成人国产精品视频 | 国产欧美精品一区二 | 亚洲一区精品中文字幕 | 国产精品综合色 | 五月丁香六月综合激情在线观看 | 欧美一区二区视频在线 | 日产国产精品日韩精品 | 国产在线精品成人一区二 | 乱码一线二线三线新区破解欧 | 国产在线自在拍91有声 | 欧美精品亚洲精品日韩专区va | 青苹果乐园影院在线播放 | 欧美激情视频国产二区 | 一出一进一爽一粗一大视频免 | 国产午夜三级在线播放 | 亚洲精品一区二区三区四区五区 | 91精品欧美综合在线观看 | 欧美人与性囗牲恔配 | 天美影视–天美影视传媒有限公司 | 99在线精 | 国产一级一片免费播放放 | 国产亚洲精品成人a在线 | 日产精品一卡2卡三卡4乱码 | 51国产愉自视频区视频 | 亚洲日韩天堂网中文字幕 | 国产未成女年一区二区 | 成人精品妖精视频在 | 岛国aaaa级午夜福利片 | 国产性自爱拍偷在在线播放 | 91日韩高清在线观看播放 | 91九色精品国产自产精品 | 射精专区一区二区朝鲜 | 亚洲精品高清国产 | 综合欧美一区二区三区 | 人摸人摸在线视频 | 日本中文字幕一區二區三區不卡 | 欧美在线性爱国产 | 国产无人区码一码二码三mba | 国产在线拍揄自揄拍免费下 | 国产精品自在拍一区二区不卡 | 亚洲综合 | 中文字幕精品一二三四五六七八 | 国产一级自拍亚洲精品在线看 | 91精品全国免费观看青青 | 夜夜嗨一区二 | 国产不卡视频一区二区三区 | 国产台湾佬国产娱乐 | 亚洲电影 | 成人午夜视频在线观看 | 国家人类遗传资源共享服务平台 | 全黄裸片一29分钟免费真人版 | 久精品国产欧美亚洲色a大片 | 国产原创精品国产专区 | 日韩亚射亚洲国产第一 | 日本sm极度另类视频 | 人成黄页在线观看国产 | 成全视频在线观看免费高清 | 国产乱人视频在线观看播放器 | 亚洲日本aⅴ片在线观看香蕉 | 国产欧美日韩不卡 | 欧美人与性动交α欧美精品 | 日本老司机午夜福利在线免费 | 国产免费激情网站 | 国产欧美日韩在线视 | 国产产精品亚洲一区二区在线观看 | 欧美亚洲日韩午夜激情影院 | 韩国精品视频一区二区在线播放 | 一区二区三区四区在线播放视频 | 香蕉精品亚 | 国产日本精品视频 | 精品视频69v精品视频 | 欧美日韩中文在线观看 | 中文字幕一区二区三区四区五区 | 国产欧美日韩资源在线观看 | 日本不卡一区二区三区视频 | 日韩欧美国产另 | 伊人网视频 | 涩色亚洲激情第二页 | 亚洲视频 | www.美色吧| 欧美精品天堂一区二区不卡 | 国内精品国内精品自线一二三 | 国产亚洲欧美在线观看的 | 99国产精品尤物精品视频 | 欧美专区日| 在线看片免费人成视频手机观看 | 中文字幕精品亚洲无线码一区应 | 国产高清在线观看一区二区三区 | 国产人妖在线播放一区二 | 亚洲精品欧 | 国产永久免费高清视频 | 亚洲成a人片在线观看www流畅 | 图片区小说区激情区偷拍区 | 日韩成本大片35分钟免 | 亚洲人成小说网站色在线观看 | 国产v精品成人免 | 8x8ⅹ永久华| 欧美一区二区三区四区婷婷 | 国产亚洲欧美在线播放网站 | 国产精品乱码一区二区视频 | 日本汚视频在线观 | 伦理、限制级电影手机在线观看 | 区三区影院动漫 | 欧美精品一区在线观看 | 亚洲精品成a人在线观看 | 国产日韩中文字幕制服 | 福利一区二区三区在线观看 | 国产精品自在自线亚洲 | 欧美亚洲a∨中文 | 91日本在线观看亚洲精品 | 99精品偷拍视频一区二区三区 | 成人日韩精品一区二区 | 欧美有色 | 国产在线精品 | 绿巨人视频app官网 国产一区二区在线视频观看 | 国产精品自在拍在 | 免费大片aⅴ入口 | 欧美日韩视频在线一区二区 | 羞羞视频下载 | 国内精品无 | 成年女人wwxx免费 | 特别黄的免费视频大片 | 中文字幕一区二区三区免费看 | 国产一二三四区 | 不卡免费国产 | 樱桃视频香蕉 | 国产在线一卡2卡三卡4卡免费 | 久青青视频在线观看久 | 中国字幕在线看韩国电影 | 午夜视频在线瓜伦 | 自拍三级综合影视 | 免费播放婬 | 精品国偷自产在线不卡短视 | 自拍偷自拍亚洲精品播放 | 免费电影电视剧在线观看 | 一区二区三区四区日韩 | 87国产私拍福利精品视频 | 男人猛躁进女人成人免 | 欧美国产在精品 |