我使用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。请求帮助
答案 0 :(得分:0)
您必须使用自定义窗口小部件,您可以在代理的createEditor()
函数中创建一个这样的代码/这些内容:
QFrame *frame = new QFrame();
frame->setLayout( new QHBoxLayout() );
frame->layout()->addWidget( new QLineEdit() );
frame->layout()->addWidget( new QToolButton() );
return frame;
或者您可以使用设计器创建自定义窗口小部件并返回其中一个。