#include <QtGui>
class TestDelegate: public QStyledItemDelegate {
Q_OBJECT
public:
TestDelegate
(QObject * parent
= 0 ) : QStyledItemDelegate(parent)
{
m_format = true;
}
{
Q_ASSERT(index.isValid());
qDebug() << "Paint called for ("<< index.row() << "," << index.column() << ")";
// Default setup for this index
QStyleOptionViewItemV4 opt = option;
initStyleOption(&opt, index);
const QWidget *widget
= opt.
widget;
// Change the display the columns
int mins = index.data(Qt::EditRole).toInt();
if (m_format) {
// H:MM
int hours = mins / 60;
mins = mins % 60;
}
else {
// raw minutes
opt.text = opt.locale.toString(mins);
}
// Draw it
style
->drawControl
(QStyle::CE_ItemViewItem,
&opt, painter, widget
);
}
public slots:
void toggleFormat() {
m_format = !m_format;
qDebug() << "Toggled to : " << m_format;
}
private:
bool m_format;
};
Q_OBJECT
public:
{
m_button->setText("Toggle format");
TestDelegate *del = new TestDelegate(this);
m_view->setItemDelegate(del);
connect(m_button, SIGNAL(clicked()), del, SLOT(toggleFormat()));
layout->addWidget(m_view);
layout->addWidget(m_button);
}
m_view->setModel(model);
}
public slots:
private:
};
int main(int argc, char *argv[])
{
for (int row=0; row<10; row++) {
for (int col=0; col<5; col++) {
newItem->setData(row*10+col, Qt::EditRole);
model->setItem(row ,col, newItem);
}
}
MainWindow main;
main.setModel(model);
main.show();
return a.exec();
delete model;
}
#include "main.moc"
#include <QtGui>
class TestDelegate: public QStyledItemDelegate {
Q_OBJECT
public:
TestDelegate(QObject * parent = 0 )
: QStyledItemDelegate(parent)
{
m_format = true;
}
void paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
Q_ASSERT(index.isValid());
qDebug() << "Paint called for ("<< index.row() << "," << index.column() << ")";
// Default setup for this index
QStyleOptionViewItemV4 opt = option;
initStyleOption(&opt, index);
const QWidget *widget = opt.widget;
QStyle *style = widget ? widget->style() : QApplication::style();
// Change the display the columns
int mins = index.data(Qt::EditRole).toInt();
if (m_format) {
// H:MM
int hours = mins / 60;
mins = mins % 60;
opt.text = QString("%1:%2").arg(hours).arg(mins, 2, 10, QLatin1Char('0'));
}
else {
// raw minutes
opt.text = opt.locale.toString(mins);
}
// Draw it
style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget);
}
public slots:
void toggleFormat() {
m_format = !m_format;
qDebug() << "Toggled to : " << m_format;
}
private:
bool m_format;
};
class MainWindow: public QWidget {
Q_OBJECT
public:
MainWindow(QWidget *parent=0):
QWidget(parent)
{
m_button = new QPushButton(this);
m_button->setText("Toggle format");
m_view = new QTableView(this);
TestDelegate *del = new TestDelegate(this);
m_view->setItemDelegate(del);
connect(m_button, SIGNAL(clicked()), del, SLOT(toggleFormat()));
QVBoxLayout *layout= new QVBoxLayout(this);
layout->addWidget(m_view);
layout->addWidget(m_button);
}
void setModel(QAbstractItemModel *model) {
m_view->setModel(model);
}
public slots:
private:
QTableView *m_view;
QPushButton *m_button;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStandardItemModel *model = new QStandardItemModel();
for (int row=0; row<10; row++) {
for (int col=0; col<5; col++) {
QStandardItem *newItem = new QStandardItem();
newItem->setData(row*10+col, Qt::EditRole);
model->setItem(row ,col, newItem);
}
}
MainWindow main;
main.setModel(model);
main.show();
return a.exec();
delete model;
}
#include "main.moc"
To copy to clipboard, switch view to plain text mode
Bookmarks