本文主要是介绍Qlistwidget双击编辑的时候 如何控制编辑框大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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);
}
通过这些函数可以控制文件编辑器的大小。
这篇关于Qlistwidget双击编辑的时候 如何控制编辑框大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!