Создал QTableView - в одном из столбце должен быть QTextEdit(без редактирования)
Делаю через
ui.tableView->setItemDelegateForColumn(1,new ItemDelegatePing(this));
Но он появляется,если пытаюсь редактировать эту ячейку.
Надо чтоб QTextEdit появился сразу - редектироваться ячейка не будет,там просто
будет печататься текст.
Как это побороть
1) Зачем нужен QTextEdit(без редактирования)??
2) Может проще нарисовать рамочку?(или что-то типа того)
3) Делаем свой делегат и переопределяем
virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index )
4) Если требуется отрисовка именно QTextEdit, да еще в текущем стиле, похоже(не полностью уверен) нужно рисовать фрейм:
C++ (Qt)
class TMyDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
TMyDelegate (TAbstractItemModel* Model, QObject *parent = 0);
virtual ~TMyDelegate ();
virtual void paint(QPainter* painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
...
...
...
void TMyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (index.column != 1) {
QStyledItemDelegate::paint(painter, option, index);
return;
}
...
...
QStyle* style = QApplication::style();
QStyleOptionViewItemV4 opt = option;
initStyleOption(&opt, index);
...
...
style->drawControl(QStyle::CE_ShapedFrame, option, painter);
...
...
}