超碰91资源站-超碰97豆花-超碰97人妻-超碰97人人干-超碰97人人香蕉-超碰97天天操-超碰97在线资源站-超碰97资源站共享-超碰97资源站总站-超碰aa在线91-超碰av操-超碰爱爱

半岛外围网上直营

Qt網(wǎng)格組件QtitanDataGrid教程:如何使用添加新行功能

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

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

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

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

QtitanDataGrid使你能夠從不同的來(lái)源加載各種類型的數(shù)據(jù)到一個(gè)快速、靈活和功能性的可編輯網(wǎng)格中,支持排序、分組、報(bào)告、創(chuàng)建帶狀列、按鈕的拖放和大量其他方便的功能。這個(gè)數(shù)據(jù)網(wǎng)格幫助具有Delphi和C++背景的新手和經(jīng)驗(yàn)豐富的Qt開發(fā)者使用同樣全面的高級(jí)可編輯網(wǎng)格功能,他們已經(jīng)習(xí)慣了在相應(yīng)的IDE中使用這些功能,而這些功能并不是標(biāo)準(zhǔn)Qt庫(kù)的一部分。

下載QtitanDataGrid最新版

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

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





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



標(biāo)簽:

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

文章轉(zhuǎn)載自:

為你推薦

相關(guān)產(chǎn)品
軟件
  • 產(chǎn)品功能:UI界面
  • 源 碼:非開源
  • 產(chǎn)品編號(hào):13579
  • 當(dāng)前版本:v6.3 [銷售以商家最新版為準(zhǔn),如需其他版本,請(qǐng)來(lái)電咨詢]
  • 開 發(fā) 商: The Qt Company 正式授權(quán)
  • ">Qt

    一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序開發(fā)框架。

    控件
  • 產(chǎn)品功能:UI界面
  • 源 碼:非開源
  • 產(chǎn)品編號(hào):13493
  • 當(dāng)前版本:v9 beta [銷售以商家最新版為準(zhǔn),如需其他版本,請(qǐng)來(lái)電咨詢]
  • 開 發(fā) 商: Developer Machines 正式授權(quán)
  • ">QtitanDataGrid

    一個(gè)獨(dú)特的Qt開發(fā)框架產(chǎn)品,吸收了Delphi、C++以及其他語(yǔ)言的優(yōu)點(diǎn)

    title
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    利記足球官網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 真人boyu·博魚滾球網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 最大網(wǎng)上PM娛樂(lè)城盤口(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 正規(guī)雷火競(jìng)技官方買球(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 雷火競(jìng)技權(quán)威十大網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) boyu·博魚信譽(yù)足球官網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 權(quán)威188BET足球網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 正規(guī)188BET足球大全(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 国产尤物精品视频 | 1024国产在线在线视频 | 国产成人高清精品免费软件 | 97人妻无码免费视频一区 | av毛片久久久久午夜福利hd | 国产麻豆福利在线观看 | 91麻豆精品传媒人妻系列 | 福利一区二区久久 | 国产日韩一区在线精品欧美玲 | 99精品久久久久久久 | 国产精品无码一区二区三区在 | 岛国一二三区无码视频 | 国产亚洲精品久久久久一区 | ts人妖国产一区 | 韩国福利一区二区三区高清视频 | 国产精品视频一区二区三区四区 | 国产无码资源在线观看 | 国产毛片japa | 国产精品亚洲综合中文字幕 | 国产午夜成人久久无码一区二区 | 2025精品国产综合久久 | 东京热人妻无码一区二区av | 精品人妻系列五月天 | 国产av成人无码精品网站 | 韩国美女主播热舞 | 91亚洲一区二区在线 | 高潮毛片无遮挡高清视频播放 | 国产精品盗摄一区二区在线 | 91大神大战酒店翘臀美女 | 2025国产精品性爱 | 91天堂一区二区三区在线 | 国产三级影片久久 | 国产成人免费精品在线观看 | av网站在线播放 | 国产成人无码āā精品一区 | 成人免费无码婬片在线观看免费 | 91尤物国产网红尤物福利 | 国产一区二区三区精品porn | 国产高清在线精品一区不卡 | 国产午夜亚洲精品理论片八戒 | 国产成人综合伊人日韩 | 国产精品一区二区三区精 | 91系列在线观看免费 | 99精品免费久久久久久久 | 高清不卡一区二区 | 精品一区二区国产偷窥 | 国产精品六区久久综合亚洲av | 99久久精品无码一区二区免费 | 精品日韩二区三区精品视频 | a级一级 | 国产在线线精品 | 2025国产拍一区二区精品 | 99精品久久这里只有精品 | 国产一区二区日韩欧美在线 | 国产91一区在线 | 成人精品视频99在线观看免费 | 国产午夜在线视频观看 | 国产日韩不卡免费精 | 国产a视频精品免费观看 | 国产成人无码区免费网站 | 99精品全国免费观看视频 | 国产精品日韩av在自线在免费 | 国产欧美日韩综合精品无毒 | 99国产精品视频一区二区三区 | 成人无码网www在线观看精东 | 后入内射欧美99二区视频 | 福利姬视频在线观看 | 成人av在线观看 | 国产指交视频在线观看 | 精品香蕉一区二区三区浪潮 | 2025无码最新国产在线观看 | 国产成人无码专区bd国语中字 | 国产天堂亚洲国产碰碰 | 91精品国产无线乱码在线 | 国产精品制服丝袜美 | 国产成人免费观看在线视频 | 国产精品美女久久久浪潮av | 92国产福利一区二区三区 | 白丝jk女仆爆乳自慰喷水 | 国产亚洲欧美一区二区三区 | 国产高清国产精品国产 | 精品成人免费一区二区三区 | 国产一区二区三区精品91 | av片在| 成人无码一区二区三区 | 国产成人精品免费视频 | 国产精品偷窥熟女精品视频 | 国产高潮流白浆视频 | 国产精品免费观看一区二区 | 国产高清精品一区二区不卡 | 国精品午夜福利视频蜜臀 | 国产高潮流白浆喷水免费a片激情 | 国产av大毛片一区二区 | 国产福利91精品在线观看 | 99精品久久精品一区二区 | 国产精品一区二区久久优播 | 操人人射| 国产女主播资源一区二区网站 | 91久久 | 国产私人在线在线视频 | 成年午夜免费a | 国产做a爰片久久毛片a片白丝 | 国产精品国产三级国产普通 | 国产精品欧美视频另类专区 | 精品免费av一区二区三区 | 成av人片在线观看不卡 | 精品国产熟女成人av | 国产高清a片在线看 | 国产av无码片毛片一级流奶水 | 国产一区二区三区在线免费 | 成人无码电影在线 | 99久re热视频这只有精品6 | 国产午夜毛片一区二区三区 | 国产一级av国片免费 | 韩国精品无码一区二区三区视频播放 | 国产三级片网站免费播放 | 囯产免费久久久久久国产免费 | 国产午夜人做人免费视频中文 | 成人日韩一区在线 | 国产传媒一区二区三区四区五区 | 18禁男女无遮挡啪啪网站 | 97人妻人人做人碰人人添高清 | 国产真实喝醉系列3 | 91免费永久 | 成午夜精品一区二区三区 | 国产在线观看高清看片 | 国产高清中文字幕欧美 | 精品国产人妻一区二区三区 | 国产午夜三级片 | 91精品国产麻豆国产在线 | 波多野结衣中文字幕一区二区 | 国产精品自拍小视频 | 国产麻豆剧传媒精品 | av毛片uhd | 国产精品女同一区二区久久 | 国产av国片| 国产爆白浆水真多视频 | 国产av秘无码一区区三区 | 精品无码一区二区三区aⅴ 精品无码一区二区三区av | 国产99久久九九精品免费 | 国产成人精品无码区电影 | 国产欧美日本亚洲精品一5区 | 国产精品偷伦视频观看免费 | 国产成人自拍视频 | 18禁男女午夜无遮挡网站免费 | 91无码久久国产线看观看 | 国产一区二区av免费 | 国产精品嫩草影院一二三区 | 国产高清av在线播放无弹窗 | 国产后式视频无码在线 | 精品久久久久久免费影院8 精品久久久久久清纯 | 91久久国产综合精品 | 成人亚洲欧美成αⅴ人在线观看 | 国产精品日韩2025 | 国产一区二区三区自产 | 丰满人妻一区二区三区免费视频 | 国产一区二区在线观看美浪 | 国产高清美女一级毛片久久 | 国产黄色片免费看 | 国产成在线观看免费视频成本 | 国产狂喷潮在线观看视频欧美 | 国产精品一区二区三区99性 | 99精品免视看一日韩 | 国自产偷精| 国产精品成人影院在线观看 | 国产一区二区三区成人久久片老牛 | 国精品午夜福利视频蜜臀 | 国产在线观看不卡 | 国产精品无码一区二区三区毛片 | 国产精品女a片爽爽波多洁 国产精品女a色欲av色欲老师 | 国产精品成人亚洲 | 精品国产自线午夜福利在线观看 | a级毛片无码兔费真人久久 a级毛片无码兔费真人久久91 | 国产午夜精品久久久久 | 精品无码国产在线观看 | 岛国无码av潮喷 | 精品人妻无码专区视频网站 | 国产在线一区二区综合免费视频 | 丰满迷人的少妇特级毛片 | 动漫精品一区二区三区在线 | 国产午夜精品一区二区亚洲国 | 国产三级九九久久三级av | 激情人妻另类人妻伦 | 国产尤物精品自 | 韩日午夜在线资源一区二区 | 国产精品流白浆在线观 | 国产在线观看国偷精品产 | 91午夜精品久久久久精品 | 国产91在线二区 | 2025亚洲卡一卡二新区入口 | 国产午夜影院黄色片 | 成人黄页网站免费观看大全 | 北岛玲日韩精品一区二区三区 | 精品无码一区二区三区av影院 | 国产成人精品第一区揄拍无码 | 国产女同互慰高潮流水视频 | 国产午夜高清无码视频 | 91在线欧美成人 | av无码国产精品色午夜 | 国产午夜一级毛片 | 国产精品一区在线 | 69视频福利一区二区三区 | 国产精品酒店在线 | 国产精品重口变态sm在线观看 | 国产在线无码成人网站 | 91国内揄拍国内精品对白 | 国产欧美日韩在线视频观看 | 动漫成人无码精品一区二区三区 | 国产激情久久亚洲欧美视频在线 | 国产丝袜深夜福利院在线 | 成人国内精品久久久久影院 | 国产成人啪精品短视频 | 精品国产99久久久久久www | 成人av无码国产在线 | 国产精品无码污污污免费网站 | 成人无码a区在线观看视 | av毛片高清在线观看 | 国产成人精品一区二区不卡 | 国产成人综合亚洲欧美天堂 | 国产短视频精品一区二区三区 | 国产精品成人网站在线观看 | av免费毛片一区二区蜜臀 | 国产欧美另类久久 | a片人禽杂交视频在线观看 a片人人澡c片人人人妻蜜臀 | 国产精品白丝av | 国产精品亚洲w码日韩中文app | 国产一区二三区精华视频 | 国产欧美日韩综合精品一区二区三区 | 国产肥熟女视频一区二区 | 精品动漫一区二区无码视频 | 成人综合色在线观看网站 | 18禁黄污无遮挡无码网站 | 91日本在线观看亚洲精品 | 国产在线拍揄拍自揄拍无码资源 | 成人午夜免电影费观看 | 国产精品免费视频网站 | 精品一区二区三区免费视频 | 国产精品蜜臀在线观看 | 精品国产人妻一区二 | 国产日韩精品福利视频综合一区二区 | 精品无人区乱码一区2区3区 | 国产精品久操视频 | 精品无码三级在线观 | 国产亚洲一区二区在线观看视频 | 国产精品人人爽人 | av在线观看免费播放 | a级国产免费黄片 | 国产午夜福利高清小视频合 | 国产精品久久久久精品三级a | 国产无套内射毛片 | 国产自产第一区c国产 | 国产午夜精品一区二区三区小说 | 国产中文字幕手机视频 | 成人免费av一区二区三区 | 国产精品高潮久久久久久无码 | aⅴ无码一线天在 | 国精品无码一区二区三区左线 | 国产一区二区三区精品porn | 国产探花在线精品一区二区 | 国产成人精品白浆久久69 | 国产成人在线看 | 国产精品无码久久久久久 | 国产欧美亚洲另类aⅴ | 国产99久9在线视频 国产99久9在线视频传媒 | 91麻豆成人精品国产免费网站 | 国产91白浆四溢 | 国产成人18黄网站在线观看 | 国产在线视频最新中文字幕 | 精品国产高清a毛片无毒不卡 | 国产精品一区二区日韩91 | 国产精品一线天在线观看 | 国产成人精品 | 国产欧美日韩综合精品二区久久 | 18成人片 | 国产精品嫩草影视在线观看 | 精品少妇人妻av无码专区国产精 | 国产在线视频国产永久 | 精品亚洲高清一区二区 | 精品国产99久久 | 2025国产亚洲日韩在线 | 成年午夜一级毛片视频 | 国产精品视频一区二区三区不卡 | 国产精品无码免费专区午夜 | 精品视频在线观自拍自拍 | 高清亚洲日韩欧洲不卡在线 | 国产成人精品免费视频大全 | 国产综合精品中文第一 | 91网站免费看 | 国产产在线精品亚洲aavv | 国产原创无码 | 国产果冻传媒精品a片在线 国产果冻豆传媒麻婆电影 国产果冻豆传媒麻婆精东 国产韩国精品一区二区三区 | 成人午夜精品久久久久久久 | 国产精品免费不卡av | 国产福利在线观看永久免费 | 国产成人高清亚洲一区 | 国产自愉自愉 | 国产人妻久久精品一区二 | 国产高清在线观看va | 精品日产一区二区三区手机 | 精品日本亚洲一区二区三区 | 3d新金瓶玥菲无删减完整版 | 成人欧美一区二区 | 精品国产一区二区三区免费 | 国产成人精品cao在 国产成人精品cao在线 | 国产极品嫩模一区二区 | 国产福利在线视频大二 | 国产三级aⅴ在在线观看 | 99久久精品免费看国产一区二 | 91精品国产综合久久蜜桃 | 国产酒店制服丝袜在线 | 国产精品免费观看网站 | 高潮呻吟国产在线播放 | 精品日韩欧美一区二区三区 | 精品亚洲一区二区在线播放 | 国产麻豆剧传媒精品好看的片 | 国产午夜无码精品免费看粉 | 国产一区二区三区av天堂 | 国产中文字幕乱码免在线观看 | 国产精品欧美日韩一区二区 | 国产一区久久精品福利 | 国产午夜久久久久久 | 成人亚洲a片v一区二区三区麻豆 | 国产成人啪精品视频免费a 国产成人啪精品视频免费软件 | 成人国产亚洲日韩欧美亚州 | 91免费在线观看精品视频 | 国产寡妇树林野战在线播放 | 精品无码三级在线观看视频 | 成人午夜无码 | 国产一区日韩二区欧美三区在线 | 国产专区亚洲欧美另类在线 | 国产一区二区三区精品诱惑网站 | 99精品国产福久久久久久 | 国产精品视频永久免费播放 | av天堂手机版在线观看网站 | 国产私人尤物无码不卡在线观看 | 国产精品一区二区18 | 91精品无码人妻在线 | 国产精品果冻麻豆精东天美 | 国模无码视频一区一 | 国产精品成人av片免费看网站 | 精品国色天香新区卡一卡二 | 国产一区日韩二区欧美 | 91精品在线播放 | 精品无码一区二区三区免费观看 | 成人黄色一级高清视频 | 精品国产sm捆绑最大网免费站 | 国产三级成人免费 | 精品久久久久久无码国产 | 精品国产亚洲爽啪在线观看 | 风韵丰满熟妇啪啪区老老熟妇 | 国产av无码专区亚洲av琪琪 | 国产午夜毛片v | 91精品国产一区二区三区免费 | 成人午夜a级毛片免费 | 国产91足控脚交在线观看 | 国产精品女视频一区二区 | 国产女主播在线观看 | www高清无码日韩 | 国产精品白丝情趣av网站 | 国产午夜在线视频观看 | 国产精品国产高清国产专区 | 成人综合久久久 | 国产一区在线观看视频 | 国产无码资源在线观看 | 国产精品宾馆在线精品酒店 | 国产成人福利在线一区 | 国产精品日韩欧美在线第3页 | 国产精品美女在线观看 | av无码高潮免费 | 国产1卡二卡三卡入口 | 成人一区二区在线 | 极品精品国产超清自 | av人摸人人人澡人人超碰小说 | 国产高清久久久久毛片 | 国产91免费在线观看 | 国产精品亚洲码精品 | 成人国产网站v片免费观看 成人国产午夜在线视频 | 国产一区二区三精品久久久无广告 | av无码官方网站 | 国产精品日韩综合无码 | 精品一区二区国产三区亚洲人 | 国产三级在观线 | 国产一区二区免费不卡在线播放 | 国产主播国产精品自拍 | 国产精品日韩欧美一区2区3区 | 国产精彩视频一区二区三区 | 成人影视免费高清在线观看网站a | 国产综合欧美日韩视频一区 | 成人自拍视频在线观看 | 高清在线一区 | 韩国少妇交换做爰2家庭片 韩国太太的告白在线 | 国产精品艺校美女校花在线 | av春色在线 | 91欧美| 国产精品无码一区二蜜臀影院 | 国产毛片精品 | av无码动漫一区二区三区精品 | 国产三级成人不卡在线观看 | 国产va在线播放 | 2025亚洲综合一区二区 | 91精品新拍在线观看 | 国产成人精品无码片 | 东京热av人妻无码专区 | 国产一区二区三区高清视频 | 精品国产乱子伦一区二区三区 | 国产一区日韩精品 | 成人欧美一区二区三区 | 国产成人一区二区三区影院动漫 | 国产高清不卡秒播在线播放 | 国产成人综合亚洲不在线 | 97精品视频在线免费观看 | 91精品国产91 | 国产成人无码 | 国产白浆精品永久网站 | 精品无码av在线 | 国产av无码专区亚洲av手机麻豆 | 国产午夜精品一区二区三区极品 | 18禁黄网站禁片免费观看 | 国产中文字幕乱人伦在线观看 | 国产成人亚洲精品96 | 国产精品一区二区av不卡 | 丰满少妇五月天电视剧在线播放 | 东京热一精品 | 精品无码国产一区二区三区麻 | 国产成人无码 | 国产高潮美女出白浆在 | 国产成人精品午夜视频 | 国产三级电影院电影 | 国产福利视频一区二区在线播放 | 国产午夜福利片在线观看 | 东京无码熟妇人 | 国产在线精品亚洲第一区香蕉 | av国语在线观看 | 国产v在线在线观看视频免费 | 国自产拍av在线天天更新 | 国产高清午夜人成在线观看 | 国产免费无码av在线观看 | 精品国产a毛片久久久av蜜桃 | 狠狠色婷婷久久一区二区三区 | 国产91小视频在线观看 | 精品一卡三卡四卡免费网站 | 国产精品国产免费无码专区蜜桃 | 2025年最新偷拍视频一区 | 国产尤物亚洲精品不卡 | 国产丝袜在线精品丝袜动 | 69国产亚洲精品av久久 | 韩国日本国产无套白浆一区二区 | 国产成人无码久久 | 高清无码中文 | 91偷拍一区二区三区精品 | 国产成人亚洲欧美电影 | 国产尤物一区二区三区在线观看 | 国产精品偷伦视频 | 成人精品视频一区二区 | 国产高级桑拿会所在线看 | 91大神高清无码在线观看 | 精品亚洲a∨无码一区二区三区 | 91久久精品亚洲一区二区三区 | www.中文字幕日本 | 精品视自拍视频在线观看 | av性爱专区久 | av色蜜桃一区二区三区 | 国产高清吹潮免费视频 | 国产精品厕所电影 | 国产精品va在线观看无码电影 | 国产成人a亚洲精品无码小说 | av无码精品久久久久精品免费 | 91国偷自产一区二区三区蜜臀 | 国产麻豆剧果冻传媒白晶晶 | 国产亚洲日韩在线人成 | 3d动漫精品专区久久 | av在线观看狼友永久网站 | 国产美女视频在线精品 | 国产av国片精品无套内谢蜜臀 | 激情欧美视频一区二区三区 | 国产av一区二区三区蜜芽 | 国产经典自拍视频在 | 国产精品国产高清 | 国产aⅴ视频一区二区三区 国产aⅴ天堂无码一区二区三区 | 99精品这里只有精品观看视频 | 懂色一区二区二区av免费观看 | 99爱内射一区二区三区四区 | 国产a级一级淫片免费观看 国产a级综合区毛片久久国产精品 | 18精品久久久无码午 | 激情啪啪精品一 | 国产精品一二三四区视频 | 国产精品无码久久av | 国产高清在线观看一区二区三区 | 不卡的毛片在线视频 | 国产在线观看a片免费看 | 囯产私伦一区二区三区 | 成人女人18a级毛片 成人女人女片免费播 | 国产美女精品视频线免费播放软件 | 国产脚交视频在线观看 | 国产精品va在线观看无码不卡 | 精品亚洲欧美高清不卡高清 | 成人精品一区二区91毛片不卡 | 国产精品亚洲精品观看不卡 | 精品视频手机在线观看免费 | 精品日韩欧美一区二区三区在线播放 | av黄片高清无码在线观看 | 国产欧美高日韩精品久久一区二区 | 精品人妻潮喷久久久又裸又黄 | 国偷自愉自产产区91区 | 国产亚洲视频在线观看网 | 国产熟女一区二区五月婷 | 国产毛片精品性无码 | 国产精品嫩草影院午夜 | 精品熟女视频一区二区 | 国产一区精品在线 | 国产高清在线看av片 | 风流老熟女一区二区三区 | 国产精品爆乳无码一区二区三区 | 国内女人牲交视频播放 | 97人人受人人图片 | 国模少妇一区二区三区 | 精品色综合久久综合天天 | 国产sm重味一区二区三区 | 国产美女裸体无遮挡免费视频 | 高清国产在线拍揄自揄视频 | 精品国产毛片一区 | 99久久无色码中文字幕人妻 | 国产成人高清激情视频在线观看 | 后入内射国产 | 国产美女精品三级在线观看 | 91精品人妻一区一区三区 | 国产麻豆剧果冻传媒视频免费 | 国产a级毛片久久久精品毛片 | 国产无码毛片一区二区三区 | 国产人妖ts观看一区二区 | 91精品在线国产一区 | 国产亚洲综合天天看片 | 国产亚洲视频在线观看播放 | 国产三级在线观看免费 | 国产成人影院一区二区三区在线 | 97无码人妻福利免费公开在 | 国产无套码a在线观看 | 91精品最新国内在线播放 | 国产高清一级毛片在线 | 国产精品高清一区二区三区不卡 | 国产成人久久精品推最新 | 福利国产视频tv破解版 | 精品无码国产不卡在线观看首 | 波多野结衣中文字幕一区二区三区 | 国产成人精品午夜在线播放 | 成人亚洲色欲色一欲 | 国产午夜无码片在线观看网站 | 精品无码久久久久国产动漫3d | 国产真实老熟女无套内射 | 18禁动漫一区二区三区免费下 | 国产av玩弄放荡人妇性奴老师 | 国产白丝jk捆绑束缚调教视频 | 高潮欧美日本 | 国产成人精品无码片区 | 国产三级综合视频在线播放 | 国产大学生一区二区三区 | 国产无套视频免费看 | 国产尤物av尤物在线看 | 国产美女被遭强高 | 91久久人妻无 | 精品国产av一二三四区 | 国产经典一区 | 国产成年无码久久久久毛片 | 国产一线二线三线女 | 18禁无遮挡羞羞污污污污网站 | 国产精品无码久久av | 国产精品午夜未成人免费观看 | 国产字幕制服中文在线 | 国产精品制服丝袜电影 | 国产精品毛片天天看片 | 国产成人在线免播放观看 | 国产精品成人网站在线观看 | 国产av不卡一区二区三区 | 国产精品免费区一区二区三 | 99国产欧美另类久久久精品 | 成人国产在线欧美精品 | 动精品动漫专区3d在线看 | 国产成人精品久久一区二区 | 91麻豆精品一二三区在线 | 国产激情福利久久精品麻豆 | 91麻豆极品在线观看 | 91日本在线精品高清观看 | 国产av无码专区亚洲av男同 | 国产一区二区免费 | 国产精品va在线播放我和闺蜜 | 国产午夜片无码区在线导航 | 国产丝袜在线精品丝袜不卡 | 国产精品成人无码专区 | 国产精品亚洲手机观看每日更新 | 成人无码午夜在线观看 | 国产欧美亚洲日韩久久福利 | 国产麻豆剧传媒精品网站 | 91麻豆精品国产 | 国产一区在线观看免费 | www亚洲色大成网络.com | av无码国产精品色午夜 | 国产在线观看不卡免费高清 | 国内国产真实露脸对白磁力 | 国产精品国产成人国产三级 | 91人妻无码精品一区二区夜色 | 国产精品欧美亚洲大片在线观看 | 囯产精品一区二区免费在线观看 | 91在线无码精品秘入口九色下 | 国产成人无码综合亚洲日韩色欲 | 国产高清一区二区 | 91精品国产网曝事件门 | 国产成人综合亚洲亚洲国产第一页 | 国产成人免费av片在线观看婷婷 | av无码专区一区 | 国产av国片精品 | 99久久原创国产精品原创a | 精品黑人一区二区三区 | 国产色老太色老太在线观看 | 国产一区二区三区精品专区 | 精品人妻大屁股白浆无码久久 | 高清a无码在线观看 | 国产va免费高清在线观看 | 精品国产高清露脸在线观看 | 成人亚洲综合网站 | 国产一区在线视 | a级毛片无码专区 | 福利一区二区三区视频午夜观看 | 国产成人精品高清在线观看91 | 精品久久精品中文字幕无码 | 99国产婷婷综合在线视频 | 成人一区欧美高清夜夜片a 成人一区三区 | 91精品电影| 国产高清成人av片 | 国产极品粉嫩美女在线播放 | 91精品国产色综合久久久蜜臀 | 国产午夜精品片一区二区三区 | 91麻豆国产原创剧情片 | 69国产成人精品午夜福中文 | 国产精品一精品二精品三 | 国产一区自拍视频在线观看 | 国产一区二区在线观看动漫 | 国产野战无套av毛片户外 | 国产a级毛片 | 高清中文字幕在线a片 | 国产专区视频在线观看 | 91人妻洗澡一 | 91精品国产亚洲爽啪在线观看 | 国产精品一区二区久久优播 | av天堂影音先锋在线 | 18禁人看免费无遮挡网站不卡 | 国产无码专区亚洲 | 国产成人精品日本亚洲77美色 | 国产精品成人h视频 | 精品一区二区国产三区亚洲人 | 成年女人大片免费播放完整 | 国产精品美女www爽爽爽视 | 国产三级小视频在线观看 | 国自产拍偷拍精品 | 高清视频一区二区三区 | 国产亚洲欧美日韩在线天堂区 | 国产午夜在线免费视频 | 国产亚洲专区在线观看 | 国产精品无码久久久久成人网站 | 国产欧美精品一区二区三区四区 | 国产av无码专区亚洲a∨毛片 | 国产一区日韩二区欧美 | 2025最新手机在线 | 国产三级电影免费观看 | 国产日韩欧美成人 | 99国产精品国 | 丰满爆乳无码一区二区三区 | 国产精品欧美一区不卡亚洲 | 成人一区二区在线 | 911久久精品无码免费看 | 国产后式视频无码在线 | 国产成人精品亚洲观看一区五月天 | 国产精品毛片a | 国产欧美韩国一区二区在线播放 | 加勒比无码专区 | 国产áv傅天堂精品 国产av高清 | 国产精品成人a片在线播放 国产精品成人a区在线观看 | 成人a级毛片免费观看av一区 | 国产日韩一区二区三免费高清 | 国产精品一区二区手机在线观看 | 国产精品一区在线观看第一页 | 国产黄三级精品在线观看播放 | 国产福利微拍精品一区二区 | av无码一区二区三 | 91成人国产网站在线观看 | 成人国产亚洲精品a区 | 国产一区视频观看 | 97无码久久久久中文字幕精品 | 国产精品国产三级国产专i 国产精品国产三级国产专播 | 国产丝袜在 | 国产成人av在线影院 | 国产精品一级片 | 国产日韩激情综合一区 | 福利一区二区久久 | av无码人妻一区二区三区在 | 国产精品一区二区三区视频 | 99久久久国产精品免费无卡顿 | 国产精品国语对白一区二区 | 国产精品无码国模私拍视频 | 3d动漫精品啪啪一区二区中文 | 极品美女亚洲区 | 国产亚洲精久久久久久叶玉卿 | 国产一区二区三区伦 | 国产三级自拍 | 18禁无遮挡全彩漫画免费 | 国产精品入口麻豆 | 国产秘麻豆果冻传媒 | 国产一区二区三区精品porn | 国产在线主播观看不卡 | 国产一区二区精品九九 | 国产精品成人在线播放免费 | 国产精品大屁股白浆视频手 | 国产欧美综合在线系列 | 成人欧美一区二区三区在线观看 | 91精品国产一区二区 | 91一区二区三区四区五区 | 丰满人妻一区二区三区性色 | 国产成人av免费网址 | 韩国无码中文字幕在线视频 | 极品尤物国产在线播 | 成人三级av免费 | 成人黄色图gif视频 成人黄色网站·大全 | 91精品国产免费自在线观看 | 91福利视频合集 | 精品无码国产一区二区三区麻 | 国产另类ts人妖一区二区 | 国产亚洲欧美精品永久 | 国产a级毛片 | 国产成人av三级在线观看 | av男人的天堂在线观看第三区 | 国产激情一区二区三区在线hd | 国产成人无码a区在线 | 国产午夜精品一区二区不卡 | 丰满白嫩大屁股ass 丰满白嫩的大屁股xxxxx视频 | 国产超级aⅴ视频在线观看 国产超级a在线播放久日本 | 国产成人免费福利午夜 | 国产内射在线激情 | 国产精品视频一区 | 国产高清精品福利私拍国产 | 精品亚洲区三区二区一 | 国产高清综合中文 | 国产一区鲁鲁在线视频免费播放 | 国产午夜人做人免费视频 | a级毛片在线高清观看 | 国产成人8x视频网站入口 | 国产探花在线精品一区二 | 国产成人免费午夜在线观看 | 国产91区精品福利在线社区 | 99久久精品国产免费 | 国产粉嫩精品喷潮在线观看 | 国产午夜福利不卡在线观看视频 | 国产精品无码国产字幕av | 国产专区日韩精品欧美色 | 国产精品青草久久久久福利99 | 国产精品一区成人精品五月 | 国产黄片精品在线 | aⅴ在线观看视频 | 国产一区二区三区久久精品 | 国产一区二区三区久久精品 | 91精品国产免费久久国语蜜臀 | 国产成人高潮在线观看 | 韩国三级无码不卡在线观看 | 国产1024在线观看 | 精品少妇人妻av一区二区三区 | 国产尤物精品自在拍视频首页 | 国产人妻精品一区二区三区不 | 91精品国产麻豆国产在线 | 精品国产丝袜久久久久久无码 | 国产精品高清一二三 | 国产精品国产三级国产普通 | 国产欧美日韩另类va在线 | 国产aⅴ片 | 国产精品大片大片看大片 | 2025国产麻豆剧果冻传媒免费 | 国产精品色欲av蜜臀麻豆 | av永久无码精品桃花岛知道 | 国产av无码专区亚洲a√ | 国产亚洲综合另类无码 | 国产成人精品无码在线观看0 | 91视频精品安全吗 | 国产一区二区精品尤物 | 精品熟女少妇a∨免费久久1 | 国产一区二区三区久久精品小说 | 国产欧美日韩免费观看一区二区 | 91精品云霸高清中文字幕 | 成人综合午夜精品视频 | 国产午夜精品久久理论片小 | 国产成人av在线免播放观看 | 国产午夜福利精品一区二区三区 | 国产小视频精品一区二区三区 | 2025久久精品国产99国产精品 | 精品无码综合一区二区三区 | 国产aⅴ久久免费精品 | 18禁动漫一区二区 | av无码中文一区二区三区 | 白丝jk女仆爆乳慰喷水流白浆 | 91精品手机在线无码 | 国产在线不卡午夜精品2025 | 国产精品爆乳在线播放不卡 | 国产成人综合在线视频 |