Qlistwidget双击编辑的时候 如何控制编辑框大小

发布时间:2023年12月22日

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);
}

通过这些函数可以控制文件编辑器的大小。

文章来源:https://blog.csdn.net/foxgod/article/details/135147671
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。