qt 6.5.1 original

This commit is contained in:
kleuter
2023-10-29 23:33:08 +01:00
parent 71d22ab6b0
commit 85d238dfda
21202 changed files with 5499099 additions and 0 deletions

View File

@ -0,0 +1,37 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.16)
project(contiguouscache LANGUAGES CXX)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/corelib/tools/contiguouscache")
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
qt_standard_project_setup()
qt_add_executable(contiguouscache
main.cpp
randomlistmodel.cpp randomlistmodel.h
)
set_target_properties(contiguouscache PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
target_link_libraries(contiguouscache PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Widgets
)
install(TARGETS contiguouscache
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

View File

@ -0,0 +1,10 @@
QT += widgets
requires(qtConfig(listview))
HEADERS = randomlistmodel.h
SOURCES = randomlistmodel.cpp \
main.cpp
# install
target.path = $$[QT_INSTALL_EXAMPLES]/corelib/tools/contiguouscache
INSTALLS += target

View File

@ -0,0 +1,18 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "randomlistmodel.h"
#include <QListView>
#include <QApplication>
int main(int c, char **v)
{
QApplication a(c, v);
QListView view;
view.setUniformItemSizes(true);
view.setModel(new RandomListModel(&view));
view.show();
return a.exec();
}

View File

@ -0,0 +1,59 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "randomlistmodel.h"
#include <QRandomGenerator>
static const int bufferSize(500);
static const int lookAhead(100);
static const int halfLookAhead(lookAhead/2);
RandomListModel::RandomListModel(QObject *parent)
: QAbstractListModel(parent), m_rows(bufferSize), m_count(10000)
{
}
RandomListModel::~RandomListModel()
{
}
int RandomListModel::rowCount(const QModelIndex &) const
{
return m_count;
}
//! [0]
QVariant RandomListModel::data(const QModelIndex &index, int role) const
{
if (role != Qt::DisplayRole)
return QVariant();
int row = index.row();
if (row > m_rows.lastIndex()) {
if (row - m_rows.lastIndex() > lookAhead)
cacheRows(row-halfLookAhead, qMin(m_count, row+halfLookAhead));
else while (row > m_rows.lastIndex())
m_rows.append(fetchRow(m_rows.lastIndex()+1));
} else if (row < m_rows.firstIndex()) {
if (m_rows.firstIndex() - row > lookAhead)
cacheRows(qMax(0, row-halfLookAhead), row+halfLookAhead);
else while (row < m_rows.firstIndex())
m_rows.prepend(fetchRow(m_rows.firstIndex()-1));
}
return m_rows.at(row);
}
void RandomListModel::cacheRows(int from, int to) const
{
for (int i = from; i <= to; ++i)
m_rows.insert(i, fetchRow(i));
}
//![0]
//![1]
QString RandomListModel::fetchRow(int position) const
{
return QString::number(QRandomGenerator::global()->bounded(++position));
}
//![1]

View File

@ -0,0 +1,29 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef RANDOMLISTMODEL_H
#define RANDOMLISTMODEL_H
#include <QContiguousCache>
#include <QAbstractListModel>
QT_FORWARD_DECLARE_CLASS(QTimer)
class RandomListModel : public QAbstractListModel
{
Q_OBJECT
public:
RandomListModel(QObject *parent = nullptr);
~RandomListModel();
int rowCount(const QModelIndex & = QModelIndex()) const override;
QVariant data(const QModelIndex &, int) const override;
private:
void cacheRows(int, int) const;
QString fetchRow(int) const;
mutable QContiguousCache<QString> m_rows;
const int m_count;
};
#endif