0

我使用 QTreeView 来可视化我的对象属性。它类似于 Qt 设计器中的属性编辑器。我有各种值,布尔值,文本,颜色值,枚举,浮点数,整数,文件名等。

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

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

图片

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

我使用 Qt 5.0。谢谢帮助

4

1 回答 1

0

你必须使用一个自定义小部件,你可以在你的委托createEditor()函数中创建一个这样的代码/沿着这些线:

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

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

于 2013-03-27T15:09:58.940 回答