mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-02 15:26:00 +08:00
qt 6.5.1 original
This commit is contained in:
37
examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt
Normal file
37
examples/widgets/itemviews/spinboxdelegate/CMakeLists.txt
Normal 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(spinboxdelegate LANGUAGES CXX)
|
||||
|
||||
if(NOT DEFINED INSTALL_EXAMPLESDIR)
|
||||
set(INSTALL_EXAMPLESDIR "examples")
|
||||
endif()
|
||||
|
||||
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/itemviews/spinboxdelegate")
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
|
||||
|
||||
qt_standard_project_setup()
|
||||
|
||||
qt_add_executable(spinboxdelegate
|
||||
delegate.cpp delegate.h
|
||||
main.cpp
|
||||
)
|
||||
|
||||
set_target_properties(spinboxdelegate PROPERTIES
|
||||
WIN32_EXECUTABLE TRUE
|
||||
MACOSX_BUNDLE TRUE
|
||||
)
|
||||
|
||||
target_link_libraries(spinboxdelegate PRIVATE
|
||||
Qt6::Core
|
||||
Qt6::Gui
|
||||
Qt6::Widgets
|
||||
)
|
||||
|
||||
install(TARGETS spinboxdelegate
|
||||
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||
)
|
66
examples/widgets/itemviews/spinboxdelegate/delegate.cpp
Normal file
66
examples/widgets/itemviews/spinboxdelegate/delegate.cpp
Normal file
@ -0,0 +1,66 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||
|
||||
/*
|
||||
delegate.cpp
|
||||
|
||||
A delegate that allows the user to change integer values from the model
|
||||
using a spin box widget.
|
||||
*/
|
||||
|
||||
#include "delegate.h"
|
||||
|
||||
#include <QSpinBox>
|
||||
|
||||
//! [0]
|
||||
SpinBoxDelegate::SpinBoxDelegate(QObject *parent)
|
||||
: QStyledItemDelegate(parent)
|
||||
{
|
||||
}
|
||||
//! [0]
|
||||
|
||||
//! [1]
|
||||
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
|
||||
const QStyleOptionViewItem &/* option */,
|
||||
const QModelIndex &/* index */) const
|
||||
{
|
||||
QSpinBox *editor = new QSpinBox(parent);
|
||||
editor->setFrame(false);
|
||||
editor->setMinimum(0);
|
||||
editor->setMaximum(100);
|
||||
|
||||
return editor;
|
||||
}
|
||||
//! [1]
|
||||
|
||||
//! [2]
|
||||
void SpinBoxDelegate::setEditorData(QWidget *editor,
|
||||
const QModelIndex &index) const
|
||||
{
|
||||
int value = index.model()->data(index, Qt::EditRole).toInt();
|
||||
|
||||
QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
||||
spinBox->setValue(value);
|
||||
}
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
|
||||
const QModelIndex &index) const
|
||||
{
|
||||
QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
||||
spinBox->interpretText();
|
||||
int value = spinBox->value();
|
||||
|
||||
model->setData(index, value, Qt::EditRole);
|
||||
}
|
||||
//! [3]
|
||||
|
||||
//! [4]
|
||||
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor,
|
||||
const QStyleOptionViewItem &option,
|
||||
const QModelIndex &/* index */) const
|
||||
{
|
||||
editor->setGeometry(option.rect);
|
||||
}
|
||||
//! [4]
|
29
examples/widgets/itemviews/spinboxdelegate/delegate.h
Normal file
29
examples/widgets/itemviews/spinboxdelegate/delegate.h
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||
|
||||
#ifndef DELEGATE_H
|
||||
#define DELEGATE_H
|
||||
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
//! [0]
|
||||
class SpinBoxDelegate : public QStyledItemDelegate
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SpinBoxDelegate(QObject *parent = nullptr);
|
||||
|
||||
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index) const override;
|
||||
|
||||
void setEditorData(QWidget *editor, const QModelIndex &index) const override;
|
||||
void setModelData(QWidget *editor, QAbstractItemModel *model,
|
||||
const QModelIndex &index) const override;
|
||||
|
||||
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index) const override;
|
||||
};
|
||||
//! [0]
|
||||
|
||||
#endif
|
48
examples/widgets/itemviews/spinboxdelegate/main.cpp
Normal file
48
examples/widgets/itemviews/spinboxdelegate/main.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
// Copyright (C) 2016 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||
|
||||
/*
|
||||
main.cpp
|
||||
|
||||
A simple example that shows how a view can use a custom delegate to edit
|
||||
data obtained from a model.
|
||||
*/
|
||||
|
||||
#include "delegate.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QHeaderView>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTableView>
|
||||
|
||||
//! [0]
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
QStandardItemModel model(4, 2);
|
||||
QTableView tableView;
|
||||
tableView.setModel(&model);
|
||||
|
||||
SpinBoxDelegate delegate;
|
||||
tableView.setItemDelegate(&delegate);
|
||||
//! [0]
|
||||
|
||||
tableView.horizontalHeader()->setStretchLastSection(true);
|
||||
|
||||
//! [1]
|
||||
for (int row = 0; row < 4; ++row) {
|
||||
for (int column = 0; column < 2; ++column) {
|
||||
QModelIndex index = model.index(row, column, QModelIndex());
|
||||
model.setData(index, QVariant((row + 1) * (column + 1)));
|
||||
}
|
||||
//! [1] //! [2]
|
||||
}
|
||||
//! [2]
|
||||
|
||||
//! [3]
|
||||
tableView.setWindowTitle(QObject::tr("Spin Box Delegate"));
|
||||
tableView.show();
|
||||
return app.exec();
|
||||
}
|
||||
//! [3]
|
@ -0,0 +1,10 @@
|
||||
QT += widgets
|
||||
requires(qtConfig(tableview))
|
||||
|
||||
HEADERS = delegate.h
|
||||
SOURCES = delegate.cpp \
|
||||
main.cpp
|
||||
|
||||
# install
|
||||
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/itemviews/spinboxdelegate
|
||||
INSTALLS += target
|
Reference in New Issue
Block a user