Hi,
I have:
model->setTable( "table" );
model->select();
model
->setHeaderData
( 0, Qt
::Horizontal,
QObject::tr("Annual Pay") );
model
->setHeaderData
( 1, Qt
::Horizontal,
QObject::tr("First Name") );
model
->setHeaderData
( 2, Qt
::Horizontal,
QObject::tr("Last Name") );
model->removeColumn( 0 );
TableResult->setModel( model );
BarDelegate delegate;
TableResult->setItemDelegateForColumn(1, &delegate);
TableResult->show();
QSqlTableModel *model = new QSqlTableModel();
model->setTable( "table" );
model->select();
model->setHeaderData( 0, Qt::Horizontal, QObject::tr("Annual Pay") );
model->setHeaderData( 1, Qt::Horizontal, QObject::tr("First Name") );
model->setHeaderData( 2, Qt::Horizontal, QObject::tr("Last Name") );
model->removeColumn( 0 );
TableResult->setModel( model );
BarDelegate delegate;
TableResult->setItemDelegateForColumn(1, &delegate);
TableResult->show();
To copy to clipboard, switch view to plain text mode
and in Delegate class i've:
{
public:
BarDelegate
( QObject *parent
= 0 );
};
class BarDelegate : public QAbstractItemDelegate
{
public:
BarDelegate( QObject *parent = 0 );
void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const;
QSize sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const;
QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const;
void setEditorData( QWidget *editor, const QModelIndex &index ) const;
void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const;
void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const;
};
To copy to clipboard, switch view to plain text mode
In createEditor:
{
lineEdit->setAutoFillBackground( true );
lineEdit->installEventFilter( const_cast<BarDelegate*>(this) );
return lineEdit;
}
QWidget *BarDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
QMessageBox::information( 0, "window1", "test" );
QLineEdit *lineEdit = new QLineEdit( parent );
lineEdit->setAutoFillBackground( true );
lineEdit->installEventFilter( const_cast<BarDelegate*>(this) );
return lineEdit;
}
To copy to clipboard, switch view to plain text mode
When I press on a cell TableResult, there is no QMessageBox :/
Similar with:
{
QString value
= index.
model()->data
( index, Qt
::DisplayRole ).
toString();
static_cast<QLineEdit*>( editor )->setText( value );
}
void BarDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const
{
QMessageBox::information( 0, "window1", "test2" );
QString value = index.model()->data( index, Qt::DisplayRole ).toString();
static_cast<QLineEdit*>( editor )->setText( value );
}
To copy to clipboard, switch view to plain text mode
and :/
{
model->setData( index, static_cast<QLineEdit*>( editor )->text() );
}
void BarDelegate::setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const
{
QMessageBox::information( 0, "window1", "test3" );
model->setData( index, static_cast<QLineEdit*>( editor )->text() );
}
To copy to clipboard, switch view to plain text mode
Bookmarks