QTextEdit和QPushButton在一个QAbstractModelItem中

时间:2013-03-27 14:11:05

标签: qt qt-designer qabstractitemmodel qstyleditemdelegate

我使用QTreeView来可视化我的对象属性。 它类似于Qt Designer中的Property Editor。我有各种各样的值,bool,文本,颜色值,枚举,浮点数,int,文件名等。

我使用coustom模型来保存所有对象值并通过coustom委托显示它。因此代表检测数据的类型并具有用于编辑的特殊表示,例如,用于int / float的Spinbox和用于bool的复选框。 目前,我的Delegate为例如spinboxes创建编辑器并覆盖paint()函数以将值表示为复选框。

现在我想让用户以两种方式编辑一个值。用户应使用普通文本字段进行编辑,复制/粘贴等更改值,或按下按钮以打开QFileDialog并选择正确的文件。
  它应该如下图所示:

image http://oi48.tinypic.com/wldvub.jpg

我怎样才能做到这一点?
我需要一个文本字段和一个按钮来打开QFileDialog。

我使用Qt 5.0。请求帮助

1 个答案:

答案 0 :(得分:0)

您必须使用自定义窗口小部件,您可以在代理的createEditor()函数中创建一个这样的代码/这些内容:

QFrame *frame = new QFrame();
frame->setLayout( new QHBoxLayout() );
frame->layout()->addWidget( new QLineEdit() );
frame->layout()->addWidget( new QToolButton() );
return frame;

或者您可以使用设计器创建自定义窗口小部件并返回其中一个。