⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trackdelegate.cpp

📁 Qt4的一些例子
💻 CPP
字号:
#include <QtGui>#include "trackdelegate.h"TrackDelegate::TrackDelegate(int durationColumn, QObject *parent)    : QItemDelegate(parent){    this->durationColumn = durationColumn;}void TrackDelegate::paint(QPainter *painter,                          const QStyleOptionViewItem &option,                          const QModelIndex &index) const{    if (index.column() == durationColumn) {        int secs = index.model()->data(index, Qt::DisplayRole).toInt();        QString text = QString("%1:%2")                       .arg(secs / 60, 2, 10, QChar('0'))                       .arg(secs % 60, 2, 10, QChar('0'));        QStyleOptionViewItem myOption = option;        myOption.displayAlignment = Qt::AlignRight | Qt::AlignVCenter;        drawDisplay(painter, myOption, myOption.rect, text);        drawFocus(painter, myOption, myOption.rect);    } else{        QItemDelegate::paint(painter, option, index);    }}QWidget *TrackDelegate::createEditor(QWidget *parent,        const QStyleOptionViewItem &option,        const QModelIndex &index) const{    if (index.column() == durationColumn) {        QTimeEdit *timeEdit = new QTimeEdit(parent);        timeEdit->setDisplayFormat("mm:ss");        connect(timeEdit, SIGNAL(editingFinished()),                this, SLOT(commitAndCloseEditor()));        return timeEdit;    } else {        return QItemDelegate::createEditor(parent, option, index);    }}void TrackDelegate::setEditorData(QWidget *editor,                                  const QModelIndex &index) const{    if (index.column() == durationColumn) {        int secs = index.model()->data(index, Qt::DisplayRole).toInt();        QTimeEdit *timeEdit = qobject_cast<QTimeEdit *>(editor);        timeEdit->setTime(QTime(0, secs / 60, secs % 60));    } else {        QItemDelegate::setEditorData(editor, index);    }}void TrackDelegate::setModelData(QWidget *editor,                                 QAbstractItemModel *model,                                 const QModelIndex &index) const{    if (index.column() == durationColumn) {        QTimeEdit *timeEdit = qobject_cast<QTimeEdit *>(editor);        QTime time = timeEdit->time();        int secs = (time.minute() * 60) + time.second();        model->setData(index, secs);    } else {        QItemDelegate::setModelData(editor, model, index);    }}void TrackDelegate::commitAndCloseEditor(){    QTimeEdit *editor = qobject_cast<QTimeEdit *>(sender());    emit commitData(editor);    emit closeEditor(editor);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -