日韩福利首页在线观看网站-日韩福利免费网站视频在线-日韩福利局二区视频-日韩福利-日韩二区在线-日韩二区三区四区-日韩二区三-日韩电影中文字幕

半岛外围网上直营

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

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

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

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

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

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

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

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

    title
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    利記足球官網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 真人boyu·博魚(yú)滾球網(wǎng)(官方)網(wǎng)站/網(wǎng)頁(yè)版登錄入口/手機(jī)版登錄入口-最新版(已更新) 最大網(wǎng)上PM娛樂(lè)城盤(pán)口(官方)網(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ú)信譽(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ī)版登錄入口-最新版(已更新) 国产精品nv在线观看 | 国产福利在线观看视频 | 日本高清免费g一本视频 | 国产精彩乱子真实视频 | 免费a级伦费影视在线观看 午夜影院网站野外大战 | 拍91精品| 亚洲欧美日韩中文播放 | 日韩精品一区二区三区蜜桃 | 一国产一国产 | 国产一区美女x视频网站 | 国产精品综合在线观看 | 日韩精品成人亚洲毛 | 亚洲精品中文字幕不卡在线 | 国自产拍在线视频天 | 宝贝腿开大点我添添公漫画 | 女女射最新视 | 女视频精品免 | 精品国产男人的 | 成全高清在线播放电视剧 | 欧美亚日韩国产aⅴ精品中极品 | 日本一区二区三区视频免费看 | 中文字幕日韩wm | 欧美日韩在线观看免费 | 亚洲国产在线精品国偷产拍 | 国产蝌蚪视频在线观看 | 人人澡人人澡人人 | 海量精品楼凤 | 亚洲欧洲国产视频 | 日本巨乳一区二区不卡 | 国产精品欧美亚洲韩国日本不卡 | 亚洲mv大片欧洲mv大片入口 | 欧洲日韩国产一区 | 日韩欧美一区二区视频在线播放 | 神马家庭影院 | 成人**免费播放 | 国产美女自拍视频 | 国产精选免| 国产对白精品刺激一区二区 | 自拍亚洲欧美另类动漫 | 国产精品视频色拍拍 | 女同一区二区三区在线 | 国产偷国产偷亚州清高app | 中文字幕在线观看 | 久99久热只有精品国产15 | 国产免码va在线观看免费 | 国产女同一区二区在线 | 福利乱伦视频 | 欧美高清在线视频在线99精品 | 国产操比| 国产理论片在线播放 | 日韩精品专区中文字幕 | 日韩粗大的内捧猛烈进出视频网 | 又粗又长又硬又黄免费 | 网友自拍区在线视频精品 | 国内成人精品亚洲 | 国产专区欧美专区在线观看 | 天天插天天射 | 爽妇网国产精品 | 色色色色色色欧美日韩 | 欧美日韩一区二区精品 | 亚洲精品有码在线观看 | 欧美午夜片欧美片在线观看 | a在线亚洲男人的天堂在线 hd护士18 | 天堂а√在线最新版中文在线 | 国精产品一区一区三区有限公司 | 欧美日韩生活片 | 成人一区视频 | 国产精品视频害羞初高中 | 黑人巨大跨 | 手机在线观看 | 国产真实深喉口爆视频 | 欧美a级毛欧美1级a 99re热这里只有精品视频 | 欧美在线 | 日韩精品一区二区三区在线 | 俺去也伦理资源站 | 欧美日韩一二三区免费性片 | 制服丝袜在线手机国产 | 国产系列欧美系列每日更新 | 日本vs亚洲vs韩国一区三区 | 日韩一区二区综合精品 | 麻花豆传媒mv在线观看网站 | 亚洲欧美v视色一区二区 | 国产精品不卡高清在线观看 | 欧美高清精品一区二区 | 国产在线成本人视频摸腿 | 青青草自产拍国产精品 | 国产日韩精品中文字幕视频一区 | 99热国 | 亚洲一区二区三区四区 | 51精品日本乱码 | 日韩欧美亚洲午夜 | 欧美精品视频一区 | 精品尤物一区二区在线观看 | 国产欧美日韩va另类在线 | 懂色一区二区三区在线播放 | 国产爽片大全免费在线观看 | 国产一区二区三区不卡 | 国产伦精品一一区二区三区高清版 | 国产精品一区日本 | 精品国产自在现线免费观看 | 国产乱子伦精 | 国产欧美精品国产国产专区 | 欧美性爱之线免费观看 | 国产一区美日一区日韩一区 | 欧美日韩一区二区三区视频在 | 最新热播电影大全 | 乱码二区国产另类人人我78m | www.尤物在线 | 国语精品视频自产自拍 | 日韩精品电影亚洲一区 | 国产在线观看精品一区二区三区 | 综合欧美日韩 | 18欧美?日韩?国产?中文 | 国产在线精品91国自产拍免费 | 99精品国产高清一区 | 97国产在线看片免费人成视频 | 韩国三级国产欧美 | 4399国语在线观看视频 | 亚洲高清国产一区二区三区电影 | 激情男女| 妺妺窝人体色www聚色窝仙踪 | 国产无你高清在线观看aⅴ 色国产精品妇射 | 亚欧洲乱码视频一二三区 | 免费的三及片国产中文欧美 | 国产人成视频永久免费 | 国产成本人片 | 欧美精品老牛影 | 欧美综合国产日本 | 日韩欧美一区二区三区四 | 国产欧美日韩一区二区三区 | 国产清纯91天堂在线观看 | 91福利国产在线在线播放 | 97天堂nba永久免费入口 | 国产精品香蕉在线观看 | 亚洲中文字幕一二三四区 | 区小说区激情区图片区 | 国产精品福利在线观 | 亚洲一区二区国产精品 | 亚洲国产一区二区中文字幕 | 一级一片一a一片 | 欧美国产日产韩国在线 | 又爽又大又光又色的午夜视频 | 国产欧美亚洲一区二区三区 | 亚洲精品日韩中文字 | 极品美女在线观看国产一区 | 日本成年人视频网站 | 一区二区三区免费观看 | 在线天堂资源www在线中文 | 小黄文污到你湿 | 妺妺窝人体色www聚色窝 | 亚洲91精品 | 青青导航 | 亚洲国产精 | 99亚洲资源天堂 | 亚洲日韩视频高清 | 亚洲无卡免费 | 成人免费网站又大又黄又粗 | 亚洲国产中文日韩精品乱码 | 日韩高清亚洲精品va | 在线观看免费 | 动画片大全大人动漫在线观看 | 精品亚洲一区二区在线播放 | 偷窥清纯综合图区 | 成全在线播放视频在线播放 | 国产夜色福利院在线观看免费 | 性一交一乱一伦 | 国产超级乱婬视频免费 | 99日韩精品极品视频在线 | 99re热视频精品首页 | 成人α片免费视频在线观看 | 国产揄拍视频在线观看激情五 | 最新国语自产精品视频在 | 99精品国产一区 | 欧洲精品一区二区三区在线观看 | 欧美肥胖老妇与子乱欲视频 | 国产精品拍自在线观看 | 欧美首页| 亚洲欧美综合色区 | 奶水国产在线播放 | 肉大捧一进一出免费视频 | 又粗又大又硬又爽的免费视频 | 日本高清色 | 国产区免费视频 | 亚洲精品揄拍自拍首页一 | 亚洲国产精品青青网 | 欧美性爱视频在线播放 | 囯产精品一区二区三区线 | 69天堂网在线视频精品 | 国产精品亚洲片在线观看不卡 | 精品国产欧美一区二区日韩 | 日日澡夜| 国产一区鲁鲁在线视频免费播放 | 69精品人人人人人人人人人 | 亚洲高清二区 | 国产日韩影院在线 | 韩国午夜理伦三级理论在线观看 | 10000部禁人视频免费网站 | 99国产综合亚洲精品 | 五月天丁香婷深爱综合网 | 亚洲综合色一区二区 | 亚洲欧美国产日韩精品 | 狂野欧美性猛交xxxx免费 | 中文精品 | 国产精品首页熟女 | 亚洲免费一区二区 | 欧美一级特黄aaa大片在线观看 | 国产免费aⅴ一区二区三区 禁止18点击进 | 人人添人人 | 国产精品黄页网站在线播放免费 | 91精品国产午夜在线免费观看 | 九九热爱视频精品视频 | 国产人妖自拍 | 日韩在线欧美精品一区二区 | 国产免费真实喷潮视频 | 九九热在线视频观看这里只有精品 | 欧美色中文字幕第一页 | 国产呦网站免費資訊 | 国产亚洲免视频在线观看 | 精品日韩女仆在线观看不卡 | 国内自拍一二三四2025 | 欧美性爱福 | 欧美特一级 | 国产日韩亚洲欧美在线观看 | 最新免费影视大全 | a级国产精品理论片在线观看 | 日韩一区精品五区另类二区 | 久精品国产欧美亚洲色a大片 | 欧美一级精品视频一区 | 日本护士视频欧美无砖专区 | 婷婷伊人网 | 伦理电影网 | 69午夜成年 | 欧美+日本+国产+在线观看 | 欧美日韩国产一二三区激情在线 | 曰本性l交片视频免费 | 永久免费老妇女 | 国内精品99亚洲免费高清 | 国产视频99kai | 97蜜桃网| 欧美日韩在线视频 | 一区二区和激 | 日韩中文字幕中文有码 | 精品理伦国产在线播放 | 99精品国产一区二区三区不卡 | 男女做爰猛烈吃 | 在线观看国产日韩欧美 | 国产又粗又猛又黄又爽的视频 | 国产日产欧美一区二区蜜桃 | 欧美精品国产日韩一区二区三区 | 欧美国产日韩一区二区三区综合视 | 99视频有精品视频在线观看 | 日本性色| 国产精品自产精品在线观看 | 囯产目拍亚洲精品小草 | 最好看免费观看高清电影大全 | 不卡一区二区三区卡 | 成人爱情| 日本中文字幕乱码专区 | 日本亚洲视频 | 日韩精品高清在线亚洲天堂 | 欧美福利在线 | 91精品成人 | 99精品免费视频 | 欧美性十八变态另类 | 欧美亚洲a∨中文 | 国产精品分类在线播放 | 日韩一区二区视频在线 | 亚洲欧洲日产国码农村 | 国产性夜夜春夜夜爽 | 欧美岛国日 | 国产精品视频在这里有精品 | 国产一区视频一区欧美 | 国产一区二区三区精品 | 国产麻传媒精品国产v | 亚洲色妇网站 | 99在线精品免费视频九九 | 欧美乱子伦一区二区三区电影 | 国产欧美亚洲精品综合在线 | 国产精品自在线拍国产第一页 | 中文字幕99 | 国产精品综合日韩精品第一页 | 国产精品日韩欧 | 国产另类巨 | 岛国a香蕉片不卡在线观看 99日韩a及免费视频 | 国产91臀交在线播放 | 污污污免费 | 日本aⅴ| 国产suv精品 | 国产又欲又色的视频在线观看 | 欧洲成人爽视频在线观看 | 国产香蕉尹人在线 | 西瓜视频国产 | 免费看的国产区网站 | 国产不卡在线观看 | 日韩v亚洲v欧美v精品综合 | 午夜免费看片 | 大伊香蕉在线观看视频 | 亚洲欧美v视色一区二区 | 欧亚尺码专线欧洲b1b1 | 国产精品网红尤物福利在线 | 青青草无| 午夜性色一区二区三区不卡视频 | 亚洲天堂一区二区三区 | 国产色色 | 国产欧美视频一区二区三区 | 日本一区二区三区四区在线 | 国产午夜电影在线电影 | 91免费精品国偷自产在线在线 | 国产一区二区在线观看动漫 | 中文字幕精品卡通动漫 | x8x8国产在线最新地址 | 精品国产一区二区三区亚洲 | 欧美日韩电影在线观看 | 亚洲精品色吧88 | 日本亚洲精 | 国产又色又爽又黄刺激视频 | 草逼视频网站 | 亚洲欧美中文高清在线 | 久天堂视频中文字 | 爱在线精品视频网站 | 国产不卡一区二区在线观看 | 亚洲免费视频一区二区 | a免费网站| 亚洲欧美中日韩中文字幕 | 精品国产系列 | 亚洲mv大片欧洲mv大片入口 | 国产亚洲精品综合一区二区 | 欧美a级v片不 | 亚洲国产v片在线 | 国色天香中文在线观看www | 风韵丰满 | 日韩欧美亚欧在线视频 | 日本一道高清视频 | 国产精品一区二区三区自拍喷水 | 国产一级特黄高清在线大片 | 香蕉亚洲精品网站国产一二三四 | 国产精品观看 | 人善交vi| 精品国产人成亚洲区 | 国产在线观看中文字幕 | 亚洲国产日韩a在线亚洲 | 欧美国产综合区 | 精品一区二区三区在线视频 | 亚洲精品在线 | 欧美在线不卡一区 | 国产亚洲一卡二卡三卡四卡 | 香蕉在线播放 | 国产免费观看激情 | 亚洲第一国产午夜福利电影 | 亚洲欧美日韩一区高清中文字幕 | 亚洲人成影院在线观看 | 8x8ⅹ华人永久免费视颍 | 国产在线一区二区三区不卡 | 人在线观看 | 国产一级a一级a爰片免费无 | 国产va免费精品 | 色色综合资源站 | 好看的日韩电影 | 巨臀中文字幕一区二区 | 国产精品视频丁香花综合 | 欧日韩在线不卡视频 | 成人免费**毛 | 欧美日韩资源 | 国产蝌蚪视频在线观看 | 八戒八戒在线资源网 | 亚洲激情婷婷 | 精品91自产拍在线观看 | 综合亚洲 | 中文字幕一区二区三区四区在线 | 国产精品欧美亚洲韩国日本 | 国产视频精选 | 精品日产卡一卡二卡三入口 | 国产乱人视频在线观看播放1 | 欧洲色国产欧美一区精品77 | 91神马电 | 日本免费一区二区在线播放 | 欧美精品在线一区二区三区 | 国产盗摄一区二区三区 | 国产欧美在线手机观看 | 亚洲一区自拍视频在线 | 日韩国产精品一区二区 | 欧美jizzhd精品欧美 | 日韩视频一区二区三区 | 精品日韩一区二区三区四区五 | 囯产精品宾馆在线精品酒店 | 3751性欧美视频在线播放 | 97干色| 欧美激情视频网站 | 国产欧美视频一区二区三区 | 国产卡戴珊在线根本喂不饱2 | 国产欧美日韩综合一区在线播放 | 欧美性色欧美a在线图片 | 飘花影院午夜片理论片 | 国产免费人成视频在线观看播放 | 91极品视频在线观看 | 国产a级又黄又硬又湿刺激软件 | 自拍偷自拍亚洲精品偷一 | 日韩精品另类天天更新影院 | 久热官网 | 日韩精品色色色色 | 国语自产精品视频在线区 | 自偷自拍三级全三级视频 | 91高清完整版在线观看 | 91欧美在线精品 | 中国农村真卖bbwbbw | 亚欧洲精品在线视频免费观看 | 精品国产自1000在线现拍 | 最近的2025中文字幕免费 | 99精品在线视频观看 | 成年人免费观看 | 欧洲精品视频一二三区视频 | 视频一区视频二区在线观看 | 91啦91pornv | 免费影视大全 | 欧美一区国产精品高清亚洲 | 最好看免费观看高清电影大全 | 一区两区三区四区乱码国产精品 | 在线精品91国产在线观看 | 大地资源第二页中文高清版 | 精品国产制服丝袜高跟 | 91网视频在线观看 | 国产精品拍自在线 | 国产爽死你个荡货h粗暴视频 | 国产91小视频在线观看 | 国产极品尤物va在线精品 | 毕业之后混得很normal | 91精品人| 一区②区三区电影网 | 欧美日韩大尺码免费专区 | 国产在线脚交免费网站脚丫 | 成人全黄三级视频在线 | 蜜桃视频高清免费 | 污污网站在线观看免费 | 亚洲不卡在线视 | 亚洲欧美一区二区不卡 | 欧美最猛性 | 91aiai | 欧美日韩免费播 | 日韩一区在线欧美激情 | 欧美特黄一片aa大片免费看 | 91精品全国免费观看老司机 | 国产精品自在线拍国产 | 国产欧美日韩综合视频专 | 国精产品一区一区三区免费视频 | 91大神精品全国 | 国产福利一区二区三区四区 | 国产精品人妖 | 动漫美女被强奷视频免费网站 | 国产spa盗摄xo在线观看 | 国产在线观看成永久视频 | a4yy在线播 | 欧美国产日韩1区2区3区4区 | 最新国产91精品第二页 | 中文字幕亚洲精品资源网 | 交换配一点不卡 | 天天综合 | 国产黄大片在线观看 | 十大黄台禁用 | 1024视频精品| 日本日本乱码伦视频在线观 | 欧美另类69xxxxx极品 | 96精品专区国产在线观看高清 | xyx性爽欧美观看 | 国产乱视频| 九九国产福利伦理片 | 日本成年人黄a大片 | 国产一区二区三区在线播放无 | 亚洲老热| 亚洲国产综合视频免费在线 | 99老司机精品视频在线观看 | 日韩一区二区操 | 日日摸夜夜添欧美一区 | 免费国产一级特黄aa大片在线 | 亚欧洲精品在线视频免费观看 | 国产一级二级三级经典在线 | 免费簧片在线观看 | 亚洲国产最大aⅴ | 在线观看免费视频网站a站 国产1区 | 日韩一级香蕉片在线观看 | 资源视频在线观看 | 国产精品伦一区二区三级 | 五月婷婷中文字 | 欧美日韩一区高清在线观看 | 欧美视频一区女女视频 | 日韩在线观看自拍网址视频免费 | 国产激情丁香在线观看网址大全 | 国产欧美v欧美v在观看 | 国产91精品系列在线观看 | 国产a级又黄又硬又湿刺激软件 | 国产97碰| 五月激情综合网 | 亚洲国产精品第一区 | 91香蕉网 | 中文字幕乱码亚洲精品 | 精品国产香蕉伊思人在线 | 国产喷水在线观看 | 欧美在线三级艳情网站 | 最近免费中文字幕大全 | 国产乱码精 | 日韩精品亚洲专 | 国产精品成 | 精品国产午夜福利在线观看蜜月 | 色戒在线完整 | 成人欧美日韩在线观看 | 国产精品网站在线播放 | 国产精品高清偷窥盗摄 | 破解中文字幕 | 国产精品萌白酱永久在线观看 | 国语自产拍精品香蕉在线播放 | 国产人妖ts重口系列网站观看 | 国产h片在线观看视 | 521a成v视频网站在线入口 | 国产日产欧产精品精品首页 | 69精品人人槡 | 国产精品亚洲小说专区 | 亚洲国产精品18 | 国产一区二区三区乱码 | 日本视频中文字幕一区二区 | 午夜亚洲一区二区福 | 高清在线亚洲精品国产二区 | 末发育娇小性色xxxx | 绝色影视在线观看免费版电视剧 | 国产偷伦视频高清完整版 | 欧美国产日韩最新在线 | 九一精品国产 | 欧美三级欧美做a爱 | 99影视| 韩国三级伦在线观看久 | 亚洲日本aⅴ片在线观看香蕉 | 91香蕉国产在线观看免费永久 | 在线亚洲 | 国产精品福利在线72国 | 精品国产亚洲第一区二区三区 | 国产精品va在线观看无 | 国产在线视欧美亚综合 | 欧美va免费大片 | 亚洲国产中文在线二区三区免 | 国产欧美二区三区 | 乱小说区电影区 | 日本免费一区二区在线看片 | 91直播在线观看免费 | 欧美精品成人3d在 | 日本免费一区二区三区在线播放 | 精品视频一区二区三区在线观看 | 麻花传媒剧国产mv高清播放 | 国产精品一区日韩视频三区 | 91成人免费观看 | 国产日本欧美一区二区竹菊 | 国产精品大片在线看 | 精品国产不卡女 | 亚洲aⅴ乱码一区二区波多野 | 国产精品午夜福利在线观看地 | 欧美激情在线 | 国产午夜三级一区二区三 | 在线看伦理片 | 午夜电影国产精品一区 | 国产欧美日本亚洲精品一4区 | 精品日韩中文字幕在线 | 91同城| 国产精品大神在线播放 | 国产一区日韩一区二区三区 | 午夜免费福| 欧美午夜成人精品视频欧洲欧 | 日日摸处处碰夜夜爽 | 91福利一区日本精品国产 | 国产在线精品国自产拍影院 | 精品欧美 | 日韩欧美精品一区二区三区在线 | 国产xx00在线观看 | 日韩尤物喷水超多嫩白视频 | 五月丁香 | 国产视频欧美综合 | 精品国内一区二区三区免费视频 | 日韩一区二区三区免费视频 | 韩日一区| 亚洲aⅴ精品一区二区三区 亚洲欧美一区 | 日韩视频中文字幕视频一区 | 国产在线91下载 | 国内20| 色窝网站国产欧美 | 日本v片免费一区二区三区 中文字幕日韩经典 | 欧美一欧美一区二三区性 | 欧美精品一区二区三区在线观看 | 国产亚洲午夜影视在线观看 | 不卡电影网 | 日本一区二区三区视频在线 | 亚洲电影免费看 | 极品尤物一区二区 | 88华人永久免费 | 国产迷姦| 入口在线观看国产欧美 | 精品午夜在线视频观看 | 呦导航福利精品 | 成人激情五月天 | 97在线观看视频公开免费 | 国产乱子伦60女人的皮视频 | www亚洲| 国产精品亚洲专区在线观看 | 最新国产精品精品视频 | 91系列在线观看免 | 羞羞影院午夜男女爽爽视频 | 日本强乱视 | 亚洲欧美日韩国产精品专区网 | 国产一级a毛一级a看免费人娇 | 国产视频精品一区白白色 | 国产高清成人精品 | 自拍伦理视频一区二区三区 | 亚洲一区中文 | 成人免费一区二区三区视 | 日韩国产一区二区 | 国产放荡对白视频在线观看 | 成全世界免费高清观看 | 国产91蝌蚪 | 免费夜色污私人影 | 欧美精品v日韩精品v韩国精品v | 日韩精品在线视频 | 99精品全国在线观看 | 国产大秀视频一 | 欧美一区二区三区精品国产 | 女子初尝黑人巨嗷嗷叫 | 欧美xxxx性bbbbb喷水 | 大地影视mv高清视频在线观看 | 国产乱子伦精品免费 | 国产国产人免费视频成69 | 国产免费v片在线观看可下载 | 成年奭片 | 日韩欧美在线免费播放 | 超高颜值国产啪 | 尤物在线精品视频 | 91精品在线免费观看 | 国产在线午夜卡精品影院 | 免费人成在线观看播放 | 日韩欧美国产精品第一页不卡 | 欧美极品巨 | 欧美在线伊人 | 国产未成女年一区二区 | 乱伦国产精品日本 | 99精产国品一二三产区区别 | 欧美曰韩一区二区三区 | 亚洲制服丝袜自拍中文字幕 | 精品视频一区二区三区在线观看 | 亚洲一区在线播放蜜臀 | 亚洲理论片中文 | 欧美人另是日本人妖 | αv天堂在线观看免费αⅴ 亚洲欧美综合人成在线 | 男男做肉爱视频在线观看 | 一区二区三区四区国产免费 | www免费视频在线观看播放 | 成人妇女免费播放 | 欧美日韩视频免费播放 | 国产日韩亚洲欧美综合 | 国产小呦泬泬99精品 | 国产人伦视频在线观看 | 日韩欧美亚洲中文字幕第一页 | 欧美日韩第一区第138页 | 欧美性爱第1页影音先锋 | 成人精品视频 | 99视频在线精品免费观看6 | 精品视频一区二区观看 | 国产精品va在 | 国产小视频在线观看网站 | 国产91l在线播放 | 贝贝福利电| 免费人成在线观看网站体验站 | 国产一级录像视频播放片 | 成人精品第一区国产 | 国产精品免费αv视频 | 午夜不卡影院 | 亚洲v国产v日韩v欧美v | 亚洲丝袜在线 | 国产一级a一级a爰片免费无 | 国产精品亚洲αv | a国产乱理伦片在线观看夜 欧美日韩一二三四区 | 欧美人成在线播放网站色 | 99精品热视频国产 | 麻花传媒在线mv免费观看视频 | www.黄免费 | 少女的第一的视频 | 99热国产 | 日韩免费高清一级三 | 成年人视频网站 | 99re在线这| 国产女白丝脚交视频播放 | 爽死七七 | 亚洲精品美女久 | 中文亚洲成a人片在线播放 神马午夜电影网手机在线播 | 欧美在线视频不卡 | 国产一区二区三区高清在线播放 | 欧美亚洲精品久五月亚洲综合婷婷 | 国产真实深喉口爆视频 | 国内精品自国内精品自线电影 | 亚洲欧美国产国产一区二区三区 | 欧美日韩制服诱惑在线观看 | 日本欧美大码aⅴ在线播放 国产欧美二区三区 | 中文字幕人 | 在线视频欧美日韩 | 免费91最新地址永久入口 | 日韩亚洲欧美一区二区三区 | 女人一级视频在线观看 | 亚洲国产精品免费在线观看 | 国产一级性爱视频 | 欧美日韩在线无吗一区二区三区 | a∨中文字幕另类 | 国产欧美日韩精品综合在线 | 日韩在线视频不卡一区二区三 | 国产日韩一区二区三区视频免费 | 亚洲一码二码三码 | 3d成人动漫在线观看 | 日本二本道dⅴd一二三区91 | 亚洲欧美综合图 | 日韩精选一区二区在线观看 | 521a成v视频网站在线入口 | 亚洲人成在线播放网站 | 亚洲日韩在线中文字幕综合 | 国产欧美日韩视频在线观看一区 | 国产综合a级片视频 | 国产高清晰在线播放 | 国产精品福利电影一区二区三 | 亚洲小说区图片区另类春色 | 免费国产在线精品一区二区 | 免费观看的视频黄页 | 午夜视频在线观看国产 | 国产成a人片在线观看视频下载 | 国产午夜小视频 | 国产精品亚洲综合网熟女 | 亚洲精品1卡2卡三卡23卡 | 国产电影免费一产二产 | 国产揄拍视频在线观看 | 日韩高清免费视频观看 | 青青草97国产精品免费观看 | 日韩精品中文一 | 亚洲精品宾馆在线精品酒店 | 国产精品成人va视频区区 | 成人日韩欧美在线影院 | 又大又硬一进一出做视频 | 97久精品国产片一区二区三区 | 自拍影视亚洲高清 | 性色做爰| 88华人永久免费 | 91女神在线观看 | 国产精品亚洲一区在线播放 | 成人啪精品视频免费网 | 日韩在线一区二区不卡视频 | 日韩国产中文欧美一区二区 | 精品一二三四区 | 亚洲—本道中文字幕 | 国产精品区一区二区三在线播放 | 欧美怡红院在 | 日韩午夜免费超清视频在线观看 | 女友被粗大的猛烈进出动漫 | 成全在线观看免费观看高清 | 日韩精品一区二区三区免费 | 中文字幕亚洲激情 | 亚洲精品有码在线观看 | 日韩操穴 | 三年片最新电影免费观看 | 久青草国产97香蕉 | 国产亚洲精品午夜福利 | 日韩日韩日韩日韩精品 | 欧美日韩人美精品一区在线 | 91精品啪国产在线观看免费牛牛 | 国产欧美日韩精品二区在线 | 日本天堂天v在线播放 | 国产精品黑色蕾丝丁字裤 | 国产在线精品网红在线91 | 亚洲码专区亚洲码专区 | 不卡午夜 | 女女同性女同区二区 | 国产极品在线观看极品 | 91成年人免费视频 | 91精品一区二区三区在线观看 | 日本在线免费 | 成年人色色免费电影 | 欧美亚洲国产清纯综合图区 | 18处破外女出血视频在线观看 | 日韩免费网页版视频 | 国产精品一区二区在线看 | 国产女女互摸互 | 在线人成免费视频69国产 | 一个人看的免 | 国产a不卡片精品免费观看 91日韩精品视频 | 日韩成人国产精品视频 | 国产精品97pao | 日本一区二区三区在线播放 | 国产福利导 | 日本免费一区日本一大免费高 | 精品国产福利片在线观看 | 日本日本乱码伦视频在线 | 午夜成人爽爽爽视频在线观看免费 | 自拍偷99在线观看 | 区二区三区 | 国产卡通动漫在线第一页 | 60分钟床色大片在线观看免费 | 国产一区二区不 | 国产乱码免费一区二区三区 | 日韩精品一区二区最新 | 国产亚洲无日韩乱码观看不卡 | 国产一级二级三级精品视频 | 国产亚洲日韩网暴欧美台湾 |