Dear Wysota,
solved with item delegate. I post for newbie like me.
With QT Designer I've created a windows named voci with QTableview object named g_lista.
Then in voci.h I coded:
...more code..
#include <QItemDelegate>
#include <QItemDelegate>
To copy to clipboard, switch view to plain text mode
...more code
{
Q_OBJECT
public:
};
class mycoldelegate : public QItemDelegate
{
Q_OBJECT
public:
mycoldelegate(QObject *parent);
void paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const;
};
To copy to clipboard, switch view to plain text mode
In voci.cpp:
...more code...
void Voci::lista() /* function retreving data from DB */
{
mod_grid->setQuery("select * from voci order by ordine");
mod_grid->setHeaderData(0, Qt::Horizontal, "Codice");
mod_grid->setHeaderData(1, Qt::Horizontal, "Voce");
mod_grid->setHeaderData(2, Qt::Horizontal, "Ordin.");
ui->g_lista->setModel(mod_grid);
ui->g_lista->setColumnWidth(0, 60);
ui->g_lista->setColumnWidth(1, 200);
ui->g_lista->setColumnWidth(2, 50);
ui->g_lista->setItemDelegateForColumn(2, new mycoldelegate(this)); //Item Delegate
}
void Voci::lista() /* function retreving data from DB */
{
QSqlQueryModel *mod_grid = new QSqlQueryModel;
mod_grid->setQuery("select * from voci order by ordine");
mod_grid->setHeaderData(0, Qt::Horizontal, "Codice");
mod_grid->setHeaderData(1, Qt::Horizontal, "Voce");
mod_grid->setHeaderData(2, Qt::Horizontal, "Ordin.");
ui->g_lista->setModel(mod_grid);
ui->g_lista->setColumnWidth(0, 60);
ui->g_lista->setColumnWidth(1, 200);
ui->g_lista->setColumnWidth(2, 50);
ui->g_lista->setItemDelegateForColumn(2, new mycoldelegate(this)); //Item Delegate
}
To copy to clipboard, switch view to plain text mode
...more code...
mycoldelegate
::mycoldelegate(QObject *parent
){
}
void mycoldelegate
::paint(QPainter *painter,
{
QString text
= index.
model()->data
(index, Qt
::DisplayRole).
toString();
myOption.displayAlignment = Qt::AlignRight | Qt::AlignVCenter;
drawDisplay(painter, myOption, myOption.rect,
text);
drawFocus(painter, myOption, myOption.rect);
}
mycoldelegate::mycoldelegate(QObject *parent)
:QItemDelegate(parent)
{
}
void mycoldelegate::paint(QPainter *painter,
const QStyleOptionViewItem & option,
const QModelIndex & index) const
{
QString text = index.model()->data(index, Qt::DisplayRole).toString();
QStyleOptionViewItem myOption = option;
myOption.displayAlignment = Qt::AlignRight | Qt::AlignVCenter;
drawDisplay(painter, myOption, myOption.rect,
text);
drawFocus(painter, myOption, myOption.rect);
}
To copy to clipboard, switch view to plain text mode
Thank for help.
Bye
Bookmarks