欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

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
欧美国产另 | 免费大片aⅴ入口 | 国产精品一级国产精品片 | 国产精品片在线 | 国产午夜视频 | 国产网站在线播放 | 91精品国产免 | 99re热有精品视频国产 | 亚洲日本va在线视频观看 | 免费网站看v片在线a | 国产拍自 | 最新热门日韩电影 | 国产极品精品免费 | 日韩欧美中文字幕在线第一页 | 日韩男女激情视频在线观看 | 国产一区在线视 | 国产国产人精品视频69 | 日韩一区在线观看免费观看免费 | 国产乱码精品一区二区三区四川人 | 国产亚洲精品a在线看 | 国产女女互摸互慰在线观 | 久在线精品视频线观看 | 亚洲国产一区二区三区亚瑟 | 欧美日韩精品一区二区视频 | 亚洲中文欧美日韩在线不卡 | 中文字幕v亚洲ⅴv天堂 | 欧美精品xx| 蜜桃视频一区二区在线观看 | 国产xxxx视频在线观看 | 国产欧美日韩 | 中文字幕免费在线观看 | 九九在线观看视 | 亚洲美精品二区性爱 | 国产视频高清在线观看 | 日本一区二区三区四区在线观看 | 综合亚洲桃色第一影院 | 久在线免费观看成年人视频 | ynzhcl.org.cn | 99视频在线观看 | 婷婷综合激情五月中文字幕 | 免费观看又黄又硬又爽的视频 | 欧美精品黄页在线观看2区 日本视频 | 国产亚洲一区二区在线 | 老汉色影院首页 | 日韩午夜视频在线观看 | 亚洲国产人成在线观看 | 国产又色又爽又黄又刺激的网站 | 免费在线电影网站 | 91青娱乐免费国产视频 | 日产精品一 | 精品国产不卡一区二区三区 | 日韩精品o欧美精品亚洲精品 | 国产在线观看不卡免费高清 | 一级视频在线播放 | 黄工厂精品视频在线观看 | 国产一级二级三级经典在线 | 欧美一区二区三区免费看 | 中文字幕人成乱码熟女69 | 亚洲日韩欧美九 | 欧美高清国产一区二区三区 | 欧美日韩国产第1 | 在线鲁鲁视频免费观看 | 热门电视剧 | 日韩中文高清一 | 日韩精品区 | 国产v片在线播放免费观看大全 | 观看日本电影 | 91天堂一区二区三区在线观看 | 午夜性色一区二区三区不卡视 | 欧美精品视频在线免费观看 | 网站国产 | 真人二十三式性视频(动) | 精品福利一区二区三区免费视 | 在线不卡视频 | 最近中文字幕高清中文字 | 97国产在线看片免费人成视频 | 国产一区日韩二区欧美三 | 成人又黄又爽又色的网站 | 日本欧美中文幕 | 小说区图片区激情区视频区 | h鸡大网在线看 | 91视频完整版高清 | 天美传媒果冻传媒国产日本 | 日本一本a高清免费 | 黑人妖欧美一区 | 精精国产xxxx视频在线播放 | 日本xxx| 成视频免费国产 | 无人在线观看高清视频 | 欧美日韩国产精品一区二区 | 国产老妇玩伦国产熟女高清 | 欧美在线男人 | 欧美日韩在线在线观看 | 国际国内自拍偷拍视频摄影 | 欧美国产日韩在线观看 | 韩国三级一区 | 久青青视频在线观看久 | 免费a级网站 | 电影在线免费高清中文 | 免费精品| 亚洲精品高清 | 一区二区视频在线 | 日产亚洲一卡2卡3卡4卡网站 | 日本在线观看中文字幕无线观看 | 日本午夜免费理论片 | 亚洲欧美一区二区三区国产 | 国产不卡视频一区二区三区 | 在线免费在线观看的a | 国产黑色丝袜美女在线观看婷 | 亚洲精品中文字幕码专区 | 韩国三级香港三级日本三级 | 神马光棍 | 亚洲一区有码 | 亚洲三级一区二区在线观看 | 九九线精品视频在线观看视频 | 欧美丰满熟| 日本精品视频在线 | 国产视频亚洲 | 欧美区精品系列在线观看不卡 | 国产精品自产拍在线观看55 | 国产一区二区三区在线播放无 | 综合欧美日 | 在线观看精 | 最近中文字幕亚洲电影 | 国语自产精品视频 | 国产亚洲日韩在线播放不卡 | 大伊香蕉精品一区在线 | 亚洲欧美日本国产—区二区三区 | 色偷偷亚洲女人天堂观看欧 | 中文亚洲成a人片在线播放 人成视频在线观看国产 | 国产日韩欧美亚洲精品中字 | 亚洲高清一区二区三区不卡 | 亚洲欧美另类天天更新影院 | 电影在线免费高清中文 | 国产炮机主播在线观看 | 午夜一区二区在线观看 | 亚洲日韩成人精品不卡在线 | 国产美女一区三区在线观看 | 日韩欧美一区二区三区在线观看 | 国产伦亲子伦亲子视频观看 | 午夜理论片在线观看免费 | 免费va国产在 | 热门电影综艺电视剧手机在线观看 | 国产精品先锋 | 中文字幕在线观看一区二区 | 网址视频在线成人亚洲 | 久9视频这里只有精品8 | 激情亚洲一区国 | 在线看一区二区中 | 亚洲精品国偷拍自产 | 蜜臀精品国产高清在线观看 | 777国产偷窥盗摄精品1 | 欧洲精品视频一二三区视频 | 亚洲日韩精品国产一区二区三区 | 日韩综合精品一区二区 | 国产欧美日韩精品视频一区二区 | 99香蕉 | 91看片淫黄大片欧美看国产片 | 美女国产在线观看免费观看 | 女同恋性一区二区三区四区 | 91精品国产福利在线观看 | 国语自产拍在线观看对白 | 日韩v高清 | 成年人看的视频网站 | 97色秘乱码一区二区三 | 亚洲欧洲中文字幕免费看 | 国产美女一区二区三区 | 日本高清中文字幕高清在线 | 日本韩国欧美 | 九七九七色伦在线影院 | 日本中文字幕a∨在线观看 欧美日韩亚洲国产高清 | 精品欧美在 | 欧美亚洲色另类偷自拍 | 丝袜视频国产手机在线 | 日本一二三区不卡高清区 | 国产私拍福利精 | 91美女艹比 | 好看的电视剧免费在线观看 | 一级特黄高清aaaa大片 | 一级在线免费观看 | 国产欧美日韩精品综合 | 亚洲国产丝袜美腿在线播放 | 午夜熟女插插xx免费视频 | 精品国产乱子伦一区二区三区 | 亚洲色大成 | 日韩精品欧美亚洲高清有无 | 午夜理论电影在线观看亚洲 | 日本日本乱码伦视频在线观 | 精品一区二区三区在线观看视 | 99精品国产在 | 国产男生夜间福利免费网站 | 精品一区二区三区视频免费 | a级在线观看日韩 | 偷国产偷精品高清尤物 | 亚洲国产aⅴ精品一区二区女女 | 中文字幕热久 | 色就是色亚洲欧洲视频 | 欧美私人午夜影院 | 国产精品九九九午夜 | 日本欧美一区二区三区在线 | 91精品啪在线观看国产91 | 人人97 | 亚洲精品sm一区二区 | 国产一区二区三区在线免费 | 日本精品大胆 | 噜噜噜在线视频免费观看 | 免费国产在线观看 | 国产一区二区三区自产 | 海量热播电视剧手机电影在线观看 | 欧美第一夜 | 亚洲色精品三区二区一区 | 无毒国产不卡在线视频 | 久操电影网 | 国产一级特黄高清在线大片 | 亚洲欧美国产日韩精品在线 | 国产在线精彩视频 | 国产精品r级最新在线观看 夜夜爽免费看 | 一道久在 | 最新国产精品拍自在 | 国产免费大片 | 91极品美 | 自在拍在线播放 | 国产亚洲欧美高清在线观看 | 国产精品99五月天 | 国产精品香蕉夜间视频免费播放 | 一级视频在线观看免费 | 综合乱伦自拍影视 | 一区二区不卡中文字幕在线 | 最近日本免费观看mv免费版 | 欧美人牲 | 午夜国产精品视频一区 | 亚洲国产一区二区午夜福利 | 99ri国产在线观看 | 制服丝袜第一页在线 | 亚洲精品在看在线观看 | 午夜视频一区二区三区 | 国产福利萌白酱精品tv一区 | 亚洲日韩福利在线 | 亚洲精品在线网址 | 极品美女在线观看国产一区 | 九九在线精品视 | 国产在线精品9 | 欧美综合区自拍亚洲综合 | 影音先锋女人aa鲁色资 | 日韩视频一区二区在线观看 | 国产亚洲日韩在线播放不卡 | 国产一区视 | 中文乱码字幕在线观看播放 | 女人精aaa| 国产一区视 | 最好看免费观看高清电影大全 | 99在线精品视频在线观看 | 国产国产精品人在线视 | 国产韩国日本欧美在线观看 | 免费播放婬乱男女婬视频国产 | 特黄三级| 电视剧热播大 | 欧美a级片免费看 | 久精品视频 | 亚洲欧美中文日韩v在线观看 | 欧美午夜在线视频 | 欧美一区二区三区免费观看视频 | 亚洲日韩欧美国产精品共 | 天堂最新 | 性色福利| 日本国产在线精品专区 | 亚洲一区国产一区日韩一区 | 亚洲伊人久 | 91精品全国免费观看青青 | 日本黄一级日本黄二级 | 日韩一区二区三区不卡视频 | 亚洲一区二区三区在线观看 | 中文字幕高清免费日韩视频在线 | 91精品视频在线 | 国产精品视频丁香花综合 | 一二三四视频免 | 亚洲中文字幕30页 | 国产欧美日韩精品第一区 | 成人级片中文字幕在线播放 | 91李宗精品72集 | 国产欧美va天堂在线电 | 日韩亚洲欧美理论片 | 国产日韩精品欧美一区喷 | 国产a网站 | 亚洲清纯自偷自拍另类专区 | 成人亚洲| 中文字幕日韩一级 | 国产美女视频免费 | 亚洲网站视频在线观看 | 国产在线乱码 | 五月丁香六月婷婷综合网缴情 | 色老大综合 | 视频2免费观看 | 成人国产亚洲欧美一区 | 性欧美最新巨大乳 | 日韩高清在线播放不卡 | 午夜影院网站野外大战 | 天天影视色香 | 99在线精品免费视频九九视 | 国产情侣在线视频播放 | 亚洲第一国产午夜福利电影 | 亚洲一区有码 | 成年做羞羞的视频 | 国产精品成人va在线 | 日韩欧美综合在线制服 | 亚洲精品蜜桃 | 亚洲痴女 | 999zyz玖 | 天美麻花 | 国产精品日韩在线观看一区二区 | 91导航小污女导航天天夜夜爽 | а√新版天堂资源中文8 | 久青青视频在线观看久 | 一本大道香蕉在线 | 免费精品三级乱伦 | 日本欧美国产婷婷 | 欧美精品网站一区二区三区 | 在线播放国产一区 | 真人二十三式性视频(动) | 欧美国产日韩在线播放成人 | 中文字幕丰满伦孑 | 最近中文字幕mv在线视频www | 91桃色午夜福利国产在线观看 | 欧美私人午夜影院 | 日本亚洲欧美综合视频 | 97视频专区 | 国产精品一区99国产aaa精 | 日韩中文字幕高清在线 | 国产手机在线观看视频 | 中年熟女乱子正在播放 | 国产在线观看不卡免费高清 | 精品不卡 | 色哟哟精 | 欧美中文字幕在线视 | 欧美黑人又大又粗xxxxx | 亚洲国产日韩一级精品视频网站 | 亚洲人和日本人jzz视频 | 在线观看网站人成亚洲小说 | 日本动漫精品一区二区三区 | 亚洲人成中文字幕在 | 亚洲国产精品自在在线观看 | 欧美人与动性a欧美精品 | 99影视| 国产激情视频四区 | 短视频在线下载免费 | 免费亚洲日 | 99热免费精品 | 一区二区三区四区在线观看视频 | 精品亚洲a| 亚洲精品国产精品国自产观看 | 91九色国产在线 | 国产对白精品刺激一区二区 | 欧美自拍区日韩国产区 | 亚洲精品日韩三区 | 婷婷综合尤物精品国产 | 国产综合视频在线观看8 | 亚洲欧美日韩国产精品一区第一页 | 亚洲国产精品日韩在线观看 | 午夜免费观看福利片 | 日韩欧美国产精品 | 在线精品国产一区二区三区 | 中文乱码 | 天天躁恨恨躁夜躁2025 | 五月桃花网婷婷亚洲综合 | 费精品国产一区国产精品剧情在线 | 大陆老熟女洗澡性视频tube | 成人影院 | 亚洲熟女精品中文字幕 | 国产丝袜护土调 | 国产片婬 | 天天看片国产精品 | 国产女女| 老牛影视精品亚洲一区二区 | 最新电影免费在线观看 | 日韩欧美亚洲三区视频 | 97国产婷婷综合在线视 | 永远免费观看 | 日韩一区二区三区在线 | 男人插女人下面的视频 | 午夜理论片精品国产 | 91精品国产丝袜在线拍 | 国产高清一区二区视频 | 人人揉人人捏人人添 | a级国产乱理伦片在线播放 影视网址 | 丝袜美腿女邻居人 | 国产高清国产精品国产专区 | 亚洲人成网址在线播放小说 | 色五月播五月开心五月激 | 日本大胆一区二区三区 | 精品国产电影自在免费观看 | 国产高清免费在线观看 | 欧美一级a一级a爱片免费免免 | 免费视频6 | 国产视频91完整版播放 | 产免费一区二区三区视频 | 大色综合色综合网站 | 国产精品a无线 | 亚洲国产精品成人va在线观看 | 午夜影视免费体验区一分钟 | 特级西西| 欧美日韩成人午夜电影 | 一级欧美一级日韩片 | 亚洲动漫精品在线 | 国产日本欧美高清免费区 | 亚洲国产精品va在线看黑人 | 成人试看120秒体验区 | 日本韩国欧美 | 在线免费观看国产 | 亚洲欧美综合高清在线 | 亚洲国产婷婷综合在线精品 | 免费亚洲日| 国产一区二区视频 | 99精品国产高清自在线看超 | 亚洲国产一区二区三区在线 | 色色王国日韩 | 成人永久免费视频网站 | 精品一区二区免费vr | 国产亚洲一区二区三区日本 | 亚洲欧美人成综合导航 | 国产精选视频 | 精品国产a | 国产午夜亚洲精品不卡免下载 | 精品国产自在现偷99精品 | 国产羞羞又硬又粗又长又大 | 秋霞特一级 | 中日韩精品视频在线观看 | 亚洲日韩国产欧 | 秋霞国产午夜 | 亚洲日本va午夜在线影院 | 91社区在线观 | 国产精品高清视亚洲精品 | 亚洲综合国产一区在线 | 国产精品午夜免费观看网站 | 亚洲欧美在线不卡 | 国产高清一 | 亚洲欧美大片在线观看 | 日本乱伦自拍欧美 | 好看的电影电视剧在线观看 | 亚洲欧美精品中文字幕 | 91夫妻小视 | 不卡在线播放中文字幕在线 | 免费人成网站 | ⅴa在线观看 | 自拍偷自拍亚洲精品播放 | 911亚洲精品国产自产 | 日本韩国三级aⅴ在线观看 老妇小说 | 国产日产高清欧美一区 | 亚洲手机在线人成网站 | 欧美高清一区二区三区欧美 | 国产精品女同一区二区在线 | 日韩精品免费在线观看 | 日韩欧美国产制服丝袜 | 日韩精品一区二区三区四区蜜桃 | 免费高清欧 | 国产精品先锋 | 母+子+在线视频 | 2025最新电视剧免费观看 | 国产美女一区二区三区 | 日韩精品一区二区三区中 | 影视大全官网 | 亚洲第一在线欧美自拍日韩 | 国产一区二区精品在线 | 天堂mv在线mv免费mv香蕉 | 精品一区二区三区在线观看视频 | 妖精视频 | 午夜理论电影在线观看亚洲 | 妇女偷汉对白视频 | 黑料不打烊最新2025地址 | 东京男人的天 | 国产网站在线 | 日韩亚洲欧美高清在线观看 | 18国产精品福利片免费看 | 日本一二三区视频在线 | 欧亚日韩 | 宝贝乖把腿分大一点h欧阳凝小说 | 国产在线ts | 亚洲一区有码 | 最新好看的电视剧免费在线观看 | 中文字幕乱码免费专区 | 亚洲午夜理论片在线观看 | 亚洲精品中文字幕码专区 | 亚洲精品永久在线观看 | 欧美综合视频在线观看 | 在线观看免费精品国产第一区 | 国产精品网站在线观看 | 免费mv视频7| 91香蕉高清国产线观看免费 | 亚洲成熟 | 欧洲动漫精品专区一区二区三区 | 国产涩涩视频在线观看 | 最近中文字幕 | 午夜性爱故事在线观看 | 色就是色亚洲欧洲视频 | 中文亚洲成a人片在线播放 人成视频在线观看国产 | 欧美乱妇日本无乱码特黄大片 | 给我播放电影在线观看视频 | 性色生活片在 | 91香蕉亚洲精品人人影视 | 免费的电影天堂手机在线观看 | 国产精品色内内在线播放 | 欧美精品高清在线观看爱美 | 午夜影院0606免费 | 国产爱情岛在线观看视频 | 性生交生活影碟 | 午夜成人亚洲理伦片在线观 | 国产ā片在线 | 精品人无| 国产女女互摸互慰在线观 | 国产精品污www一区二区三区 | 国产一区二区三区不卡在线 | 日韩精品一区二区三区中文不卡 | 亚洲精品影院一区二区 | 国产亚洲一区二区三区日本 | 三级综合精品乱伦 | 亚洲国产欧美日韩精品 | 99精品综合 | 国产爽片大全免费在线观看 | 亚洲精品国偷拍自产 | 高清线视频 | 最近的2025中文字幕免费 | 国产91小视频在线观看 | 自拍偷在 | 国产日产欧美一区二区 | 福利一区二区三区视频在线 | 国产交换一区二区三区 | 两性色午夜视 | 欧美人与动 | 欧美日韩不卡中文网 | 九月丁香婷婷激情四射视频一区 | 欧美日韩国产免费一区二区三区 | 床震吃胸膜奶免费视频 | 亚洲一区二区三区免费视频 | 亚洲人成伊人成 | 亚洲国产一区二区试看 | 精品一区二区三区在线 | 亚洲国产精品免费在线观看 | 亚洲va中文字 | 国产精品福利午夜在线观看 | 日本免费一区二区视频 | 最近中文字幕免费高清mv视频6 | 日本高清视频一区二区三区 | 深爱香蕉五月 | 亚洲综合日韩精品欧美综合区 | 韩国三级香港三级日本三级la | 99视频精品全部国产盗摄视频 | 青青青国产爽爽视频免费观看 | 日韩国产一区二区中文字幕 | 亚洲色偷精品一区二区三区 | 亚洲免费公开视频在线观看 | 美女mm13| 欧美精品一区二区三区四区 | a级国产乱理论片在线观看看 | 精品一区二区三区免费视频 | 国产精品区乱淫片人成人 | 99精品国产九九国产精品 | 国产高清在线观看视频 | 国产精品一区二区播放在线 | 国产欧美日韩综合精品无毒 | 成人精品免费视频在线观看 | 熟女乱2伦 | 日韩欧美一区二区在线精品 | 最近在线观看免费完整版高清电影 | 区三区在线播放 | 亚洲欧美在线观看片不卡 | 亚洲精品国产精品国自产观看 | 最新理论片在线观看免费 | 天堂网果冻传媒 | 在线成人免费观看国产精品 | 亚洲人午夜射精精品日 | 国产精品高清全国免费观看 | 成人欧美一区二区三区的电影 | 亚洲欧美日韩在线精品一区二区 | 欧美日韩一 | 企业档案 | 在线亚洲 | 亚洲中文字幕在线精品2025 | 精品福利一区二区三区免费视 | 国产黄大片在线观看画质 | 欧美日韩亚洲国产一区二区三区 | 欧美日韩免费在线观看 | 中文字字幕乱码 | 国产91免费视频 | 一区二区三区影院在线午夜 | 十年造就经典 | 亚洲国产精品va在线看黑人 | 中文无字幕一 | 亚洲高清无一区二区三区四区 | 国产精品美女网站在线观看 | 欧美性色aⅴ欧美综合色 | 91大神| 99热免费精品 | 日韩视频网| 黑人中文字幕在线 | 国产在线短视频 | 一线路二 | 视频观看中文 | 妺妺窝人体色777777 | 一区二区三区高清视频在线观看 | 国产一区二区三区不卡在线看 | 亚洲国产丝袜美腿在线播放 | 91桃色午夜福利国产在线观看 | 91大神大战丝袜美女在线观看 | 欧美日韩免费精品一区二区在线 | 亚洲第二页 | 三级视频网站在线观看 | 丁香伊人| 国产在线不卡一区 | 极品美女国产精品 | 亚洲精品国产一级高清在线观看 | 国产v亚| 成人午夜福利免费体验区 | 国内老司机精品视频在线播出 | 一区在线观| 成人v中| 最新电影电视剧观看 | 在线丝瓜 | 国产男女爽爽爽免费视频 | 欧美最猛黑人xxxx | 国产综合 | 精品91自产拍在线观看一区 | 免费国产a国产 | 女同视频一区 | 日韩一区二区三区在线精品 | 一个人看的视频在线观看www | 偷拍激情视频一区二区三区 | 高清在线午夜一区二区亚洲 | 综合久青草视频 | 国产一区视频在线观看 | 亚洲欧美在线观看品 | 免费三级在线观看中文字幕 | 色琪影院| 福利片午夜免费观着 | 国产高清亚洲 | 国产萌白酱喷水在线播放尤物 | 国产另类亚洲日韩 | 亚洲欧美国产人成在 | 亚洲黄免费看网站 | 一边亲着一面膜下奶53分钟 | 羞羞影院午夜男女爽爽免费 | 天堂在线亚洲精品专区 | 成年奭片免费观看 | 国产视频亚洲 | 2025最新电视剧 | 在线精品91国产在线观看 | 超薄肉色丝袜一区二区 | 亚洲国产精品尤物yw在线观看 | 国产成+| 2025最新免费电影 | 最近免费中文字幕大全 | 国产亚洲一区在线 | 国产鲁鲁视频在线观看免费 | 手机看片福利 | 高清欧美性xxxx成熟 | 国产人澡人澡澡澡人 | 精品三级影视亚洲 | 日本高清中文字幕一区二区三区 | 国产超清精品在线观看 | 成人国产精品日韩 | 国产乱子伦视频大全 | 日本素人黑人视频 | 精品中文字幕 | 麻酥酥哟视频在线播放 | 91啦中文成人 | 日本中文字幕专区视频在线 | 秋霞电影网 | 激情亚洲一区国 | 免费国产黄线在线观看 | 国产精品亚洲欧美大片在线看 | 97在线视频观看在线观看视频 | 一本大道香蕉久97在线播放 | 国产日韩制服丝袜在线第一页 | 自拍三级综合影视 | 国产精品福利在线观看 | 国产一区日韩二区欧美三区 | 国产激情国语对白 | 男女拍拍视 | 国语自产偷拍精品视频偷 | 手机免费 | 在线观看片免费 | 高清欧美性xxxx成熟 | 国产欧美日韩精品第一区 | 老师脱了内裤让我爽了一夜 | 国产电影一区二区三区 | 国产精品亚洲精品五月 | 国产精品亚洲综合一区在线观看 | 一级欧美一级日韩片 | 一起碰一起噜一起 | 黄频国产免费观看 | 欧美重口另类在线播放二区 | 国产精品第一区亚洲精品 | 日本黄大片在线观看视频 | 亚洲成a人片在线观看一级 精品国产自 | 国产精选在线视频 | 两性色午夜视频免费国产 | aⅴ天堂在线 | 亚洲综合在线播放 | 激情亚洲一区国 | 日本欧美视频在线观看三区 | 美丽的姑娘高清版在线观看 | 国产婷婷一区二区在线观看 | 欧美午夜成午夜成年片在线观看 | 日韩在线看片 | 日韩高清亚洲日韩精品一 | 欧美日韩在线一区二区观看 | 亚州成人高清国产a | 国产在线精品香蕉综合网一区 | 二区三区欧美精品在线观看 | 日韩欧美在线观看一区 | 2025最新电影 | 免费无人区一码二码乱码区别在哪 | 亚洲中文在线不卡 | 精品自拍视频在线观看电影 | 2025最新国产在线精品不卡顿 | 国产精品一区二区电影 | 欧美激情一区二 | 国产九九自拍电影在线观看 | 欧美高清免费精品国产自 | 无人在线观看视频高清播放 | 欧美一性一乱一交一视频 | 亚洲国产精品一区二区九九 | 日韩伦理福利免费 | 国产亚洲高清一区二区 | 中文字幕日本有码视频在线 | 国产精品一区二555 亚洲精品在线视频 | 女人成午夜大片7777在线 | 欧美日韩国产这里只有精品 | 涩涩www在线观看免费高清 | 一区二三国产好的精华液 | 亚洲欧美福利一区二区 | 欧美一区日韩专区 | 亚洲国产经典国产精品观看免费 | 99久re热视频这里只 | 91人成在线观看网站 | 日本黄页网站免费观看 | 亚洲开心婷婷中文字幕 | 中文字幕亚洲中文字幕 | 欧美va免费高清在线观看 | 国产欧美乱夫不卡无乱码 | 八戒八戒在线资源网 | 91免费观看 | 高清一级做a爱过程不卡视频 | 精品国产v | 银杏影院| 国产精品v欧美精品v日韩 | 日本黄页网站免费观看 | 色偷偷888 | 欧美一级毛卡片免费2025 | 国产日本欧美高清免费区 | 丝袜亚洲精品中文字幕二区 | 最近免费字幕中文大全 | 欧美日韩国产区在线观看 | 国产一区二区视频在线观看 | 国产极品 | 日本三级免费 | 免费在线观看小说区激情另类 | 一区二区三区在线观看免费 | 国产精品视频一区二区噜噜 | 日产无人区一线二线三线最新版 | 在线观看免费人成片 | 一级a爱片免费观看高清完整 | 日本高清三区 | 国产真实露脸乱子伦 | 日本不卡一区二区三区 | 视频一区二区亚洲欧美 | 久热国产精品视频 | 污污视频软件下载 | 在线看推理网站 | 成人欧美精品资源在线观看 | 免费最新电视剧电影随心看 | 桃色影视国产一区二区三区 | 国产精品私密保养 | 国产视频在线一二区精品分类 | 樱花草www日本在 | 亚洲欧美一区二区三区 | 国产精品激情偷乱一区二区∴ | 99视频在线观看精品29 | 片在线播放 | 日韩乱码精品中文字幕不卡 | 欧美伦理一区二区三区电影 | 国产精品自在线观看剧情 | 国产欧美一区二区三区综合野 | 国产一区二区亚洲一区二区 | 国产精品自在线午夜福利高 | 国产精品爽爽va在线观看 | 国产原创91 | 99在线精品国产不卡在线观看 | 国产综合色产在线视 | 日本中文字幕电影 | 182tv午夜福| 最新热门电影电视剧免费在线观看 | 99热这里只 | 日韩精品男人的天堂 | 韩日国产精品一区二区三区 | 国产一区二区三区亚洲 | 成人欧美一区二区三区在线蜜 | 日韩亚洲人成在线综合日本 | 五月丁香六月婷婷综合网缴情 | 国产精品边做奶水狂喷有码 | 国产亚洲欧美一区二区三区 |