diff options
Diffstat (limited to 'sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses')
4 files changed, 0 insertions, 686 deletions
diff --git a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/main.cpp b/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/main.cpp deleted file mode 100644 index fd43b1aad..000000000 --- a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/main.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of Qt for Python. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* - main.cpp - - An example of a main window application that used a subclassed model - and view to display data from sound files. -*/ - -#include <QApplication> - -#include "model.h" -#include "view.h" -#include "window.h" - -/*! - The main function for the linear model example. This creates and - populates a model with long integers then displays the contents of the - model using a QListView widget. -*/ - -int main(int argc, char *argv[]) -{ - QApplication app(argc, argv); - - MainWindow *window = new MainWindow; - - window->show(); - return app.exec(); -} diff --git a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/model.cpp b/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/model.cpp deleted file mode 100644 index e4d4033a7..000000000 --- a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/model.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of Qt for Python. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* - model.cpp - - A simple model that uses a QVector as its data source. -*/ - -#include "model.h" - -/*! - Returns the number of items in the string list as the number of rows - in the model. -*/ - -int LinearModel::rowCount(const QModelIndex &parent) const -{ - Q_USING(parent); - - return values.count(); -} - -/* - Returns an appropriate value for the requested data. - If the view requests an invalid index, an invalid variant is returned. - If a header is requested then we just return the column or row number, - depending on the orientation of the header. - Any valid index that corresponds to a string in the list causes that - string to be returned. -*/ - -/*! - Returns a model index for other component to use when referencing the - item specified by the given row, column, and type. The parent index - is ignored. -*/ - -QModelIndex LinearModel::index(int row, int column, const QModelIndex &parent) const -{ - if (parent == QModelIndex() && row >= 0 && row < rowCount() - && column == 0) - return createIndex(row, column, 0); - else - return QModelIndex(); -} - -QVariant LinearModel::data(const QModelIndex &index, int role) const -{ - Q_UNUSED(role); - - if (!index.isValid()) - return QVariant(); - - return values.at(index.row()); -} - -/*! - Returns Qt::ItemIsEditable so that all items in the vector can be edited. -*/ - -Qt::ItemFlags LinearModel::flags(const QModelIndex &index) const -{ - // all items in the model are editable - return QAbstractListModel::flags(index) | Qt::ItemIsEditable; -} - -/*! - Changes an item in the string list, but only if the following conditions - are met: - - * The index supplied is valid. - * The index corresponds to an item to be shown in a view. - * The role associated with editing text is specified. - - The dataChanged() signal is emitted if the item is changed. -*/ - -bool LinearModel::setData(const QModelIndex &index, - const QVariant &value, int role) -{ - if (!index.isValid() || role != Qt::EditRole) - return false; - values.replace(index.row(), value.toInt()); - emit dataChanged(index, index); - return true; -} - -/*! - Inserts a number of rows into the model at the specified position. -*/ - -bool LinearModel::insertRows(int position, int rows, const QModelIndex &parent) -{ - beginInsertRows(parent, position, position + rows - 1); - - values.insert(position, rows, 0); - - endInsertRows(); - return true; -} - -/*! - Removes a number of rows from the model at the specified position. -*/ - -bool LinearModel::removeRows(int position, int rows, const QModelIndex &parent) -{ - beginRemoveRows(QModelIndex(), position, position+rows-1); - - values.remove(position, rows); - - endRemoveRows(); - return true; -} diff --git a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/view.cpp b/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/view.cpp deleted file mode 100644 index eb13a0fee..000000000 --- a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/view.cpp +++ /dev/null @@ -1,324 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of Qt for Python. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - view.cpp - - Provides a view to represent a one-dimensional sequence of integers - obtained from a list model as a series of rows. -*/ - -#include <QAbstractItemModel> -#include <QBrush> -#include <QItemSelection> -#include <QPainter> -#include <QPaintEvent> -#include <QPen> -#include <QPoint> -#include <QResizeEvent> -#include <QScrollBar> -#include <QSizePolicy> - -#include "view.h" - -LinearView::LinearView(QWidget *parent) - : QAbstractItemView(parent) -{ - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); -} - -/*! - Returns the position of the item in viewport coordinates. -*/ - -QRect LinearView::itemViewportRect(const QModelIndex &index) const -{ - QRect rect = itemRect(index); - QRect result(rect.left() - horizontalScrollBar()->value(), - rect.top() - verticalScrollBar()->value(), - rect.width(), viewport()->height()); - - return result; -} - -/*! - Returns the rectangle of the item at position \a index in the - model. The rectangle is in contents coordinates. -*/ - -QRect LinearView::itemRect(const QModelIndex &index) const -{ - if (!index.isValid()) - return QRect(); - else - return QRect(index.row(), 0, 1, 1); -} - - -void LinearView::ensureVisible(const QModelIndex &index) -{ - QRect area = viewport()->rect(); - QRect rect = itemViewportRect(index); - - if (rect.left() < area.left()) - horizontalScrollBar()->setValue( - horizontalScrollBar()->value() - rect.left()); - else if (rect.right() > area.right()) - horizontalScrollBar()->setValue( - horizontalScrollBar()->value() + rect.left() - area.width()); -} - -/*! - Returns the item that covers the coordinate given in the view. -*/ - -QModelIndex LinearView::itemAt(int x, int /* y */) const -{ - int row = x + horizontalScrollBar()->value(); - - return model()->index(row, 0, QModelIndex()); -} - -//void LinearView::dataChanged(const QModelIndex &/* topLeft */, -// const QModelIndex &/* bottomRight */) -//{ -// updateGeometries(); -// if (isVisible()) -// repaint(); -//} - -void LinearView::rowsInserted(const QModelIndex &/* parent */, int /* start */, - int /* end */) -{ - updateGeometries(); - if (isVisible()) - repaint(); -} - -void LinearView::rowsRemoved(const QModelIndex &/* parent */, int /* start */, - int /* end */) -{ - updateGeometries(); - if (isVisible()) - repaint(); -} -/* -void LinearView::verticalScrollbarAction(int action) -{ -} - -void LinearView::horizontalScrollbarAction(int action) -{ -} -*/ - -/*! - Select the items in the model that lie within the rectangle specified by - \a rect, using the selection \a command. -*/ - -void LinearView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) -{ - QModelIndex leftIndex = itemAt(rect.left(), 0); - QModelIndex rightIndex = itemAt(rect.right(), 0); - - QItemSelection selection(leftIndex, rightIndex); - - selectionModel()->select(selection, command); -} - -QModelIndex LinearView::moveCursor(QAbstractItemView::CursorAction cursorAction, - Qt::KeyboardModifiers) -{ - QModelIndex current = currentIndex(); - - switch (cursorAction) { - case MoveLeft:{ - if (current.row() > 0) - return model()->index(current.row() - 1, 0, QModelIndex()); - else - return model()->index(0, 0, QModelIndex()); - break;} - case MoveRight:{ - if (current.row() < rows(current) - 1) - return model()->index(current.row() + 1, 0, QModelIndex()); - else - return model()->index(rows(current) - 1, 0,QModelIndex()); - break;} - case MoveUp: - return current; - case MoveDown: - return current; - case MovePageUp: - return current; - case MovePageDown: - return current; - case MoveHome: - return model()->index(0, 0, QModelIndex()); - case MoveEnd: - return model()->index(rows(current) - 1, 0, QModelIndex()); - default: - return current; - } -} - -int LinearView::horizontalOffset() const -{ - return horizontalScrollBar()->value(); -} - -int LinearView::verticalOffset() const -{ - return verticalScrollBar()->value(); -} - -/*! - Returns a rectangle corresponding to the selection in viewport cooridinates. -*/ - -QRect LinearView::selectionViewportRect(const QItemSelection &selection) const -{ - int ranges = selection.count(); - - if (ranges == 0) - return QRect(); - - // Note that we use the top and bottom functions of the selection range - // since the data is stored in rows. - - int firstRow = selection.at(0).top(); - int lastRow = selection.at(0).top(); - - for (int i = 0; i < ranges; ++i) { - firstRow = qMin(firstRow, selection.at(i).top()); - lastRow = qMax(lastRow, selection.at(i).bottom()); - } - - QModelIndex firstItem = model()->index(qMin(firstRow, lastRow), 0, - QModelIndex()); - QModelIndex lastItem = model()->index(qMax(firstRow, lastRow), 0, - QModelIndex()); - - QRect firstRect = itemViewportRect(firstItem); - QRect lastRect = itemViewportRect(lastItem); - - return QRect(firstRect.left(), firstRect.top(), - lastRect.right() - firstRect.left(), firstRect.height()); -} - -void LinearView::paintEvent(QPaintEvent *event) -{ - QPainter painter(viewport()); - - QRect updateRect = event->rect(); - QBrush background(Qt::black); - QPen foreground(Qt::white); - - painter.fillRect(updateRect, background); - painter.setPen(foreground); - - QModelIndex firstItem = itemAt(updateRect.left(), updateRect.top()); - if (!firstItem.isValid()) - firstItem = model()->index(0, 0, QModelIndex()); - - QModelIndex lastItem = itemAt(updateRect.right(), updateRect.bottom()); - if (!lastItem.isValid()) - lastItem = model()->index(rows() - 1, 0, QModelIndex()); - - int x = updateRect.left(); - //int top = updateRect.top(); - //int bottom = updateRect.bottom(); - - int row = firstItem.row(); - QModelIndex index = model()->index(row, 0, QModelIndex()); - int value = model()->data(index, Qt::DisplayRole).toInt(); - int midPoint = viewport()->height()/2; - int y2 = midPoint - int(value * midPoint/255.0); - - while (row <= lastItem.row()) { - - QModelIndex index = model()->index(row, 0, QModelIndex()); - int value = model()->data(index, Qt::DisplayRole).toInt(); - - int y1 = y2; - y2 = midPoint - int(value * midPoint/255.0); - - painter.drawLine(x-1, y1, x, y2); - ++row; ++x; - } -} - -void LinearView::resizeEvent(QResizeEvent * /* event */) -{ - updateGeometries(); -} - -void LinearView::updateGeometries() -{ - if (viewport()->width() < rows()) { - horizontalScrollBar()->setPageStep(viewport()->width()); - horizontalScrollBar()->setRange(0, rows() - viewport()->width() - 1); - } -} - -QSize LinearView::sizeHint() const -{ - return QSize(rows(), 200); -} - -int LinearView::rows(const QModelIndex &index) const -{ - return model()->rowCount(model()->parent(index)); -} - -bool LinearView::isIndexHidden(const QModelIndex &index) const -{ - return false; -} diff --git a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/window.cpp b/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/window.cpp deleted file mode 100644 index fcd61d2c8..000000000 --- a/sources/pyside2/doc/codesnippets/doc/src/snippets/modelview-subclasses/window.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of Qt for Python. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QAction> -#include <QDataStream> -#include <QMenu> -#include <QMenuBar> -#include <QFile> -#include <QFileDialog> -#include <QListView> - -#include "window.h" - -MainWindow::MainWindow(QWidget *parent) - : QMainWindow(parent) -{ - setWindowTitle("Model/View example"); - - setupModelView(); - - QAction *openAction = new QAction(tr("&Open"), this); - QAction *quitAction = new QAction(tr("E&xit"), this); - QMenu *fileMenu = new QMenu(tr("&File"), this); - fileMenu->addAction(openAction); - fileMenu->addAction(quitAction); - menuBar()->addMenu(fileMenu); - - connect(openAction, SIGNAL(triggered()), this, SLOT(selectOpenFile())); - connect(quitAction, SIGNAL(triggered()), this, SLOT(close())); - - setCentralWidget(view); -} - -void MainWindow::setupModelView() -{ - model = new LinearModel(this); - view = new LinearView(this); - view->setModel(model); -} - -void MainWindow::selectOpenFile() -{ - QString fileName = QFileDialog::getOpenFileName(this, - tr("Select a file to open"), "", tr("Sound files (*.wav)")); - - if (!fileName.isEmpty()) - openFile(fileName); -} - -void MainWindow::openFile(const QString &fileName) -{ - QFile file(fileName); - int length = file.size(); - - if (file.open(QFile::ReadOnly)) { - model->removeRows(0, model->rowCount()); - - int rows = (length - 0x2c)/2; - model->insertRows(0, rows); - - // Perform some dodgy tricks to extract the data from the file. - QDataStream stream(&file); - stream.setByteOrder(QDataStream::LittleEndian); - - Q_INT16 left; - Q_INT16 right; - - for (int row = 0; row < rows; ++row) { - QModelIndex index = model->index(row); - - stream >> left >> right; - model->setData(index, int(left / 256)); - } - } -} |