1 默认的时候比较编辑框比较小,当设置
ListWidget->editItem(item);的时候会出现一个比较lineedit的,通过设置qss,可以控制lineedit的宽度,但是高度控制不了。通过qss设置lineedit border: 0px;勉强可以看到item的文字。
2 如何将lineedit 设置为整个item为编辑呢。
我们需要实现下面几个函数
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;
QWidget *CListItemDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QLineEdit *editor=new QLineEdit(parent);
editor->setFrame(false);
editor->setStyleSheet("border:1px solid red;");
//editor->setText(index.data(Qt::DisplayRole).toString());
return editor;
}
void CListItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
QLineEdit *edit = static_cast<QLineEdit*>(editor);
edit->setText(index.data(Qt::DisplayRole).toString());
}
void CListItemDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
{
QLineEdit *edit = static_cast<QLineEdit*>(editor);
model->setData(index,edit->text(),Qt::DisplayRole);
}
//option更新由 index 指定的项目的编辑器
void CListItemDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QRect rect = option.rect;
editor->setGeometry(rect);
}
通过这些函数可以控制文件编辑器的大小。