问题标签 [model-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
209 浏览

qt - 如何通过对话框编辑 Qt 树节点?

我用Qt建了一棵树,双击树中的一个节点,弹出一个对话框,编辑它然后点击ok。树是否会自动显示更改,例如节点上更改的显示(角色)名称?还是我需要一些“重绘”方法来做到这一点?以及如何设置标志?因为我通过(F2)重命名以外的对话框编辑它,所以它不能编辑吗?非常感谢。

0 投票
0 回答
1933 浏览

qt - 根据 ItemDataRole 属性设置 Qt 模型/视图项目的样式

我有一个QTreeView来自我自己模型的项目(QAbstractItemModel派生的)。现在我想为项目设置样式(在 上使用样式表QTreeView),以便根据不同的属性,它们将具有不同的背景。

此外,这个问题似乎适用于任何模型/视图容器。不只是QTreeView


例如,做交替背景很容易。alternatingRowColorsQTreeView必须true。然后在样式表中,您可以使用:alternate伪选择器来更改备用项目的属性,以便:


做选定的项目同样简单。事实上,做任何由 Qt 的伪选择器处理的事情都很容易。

但是那些不是伪选择器的属性呢?特别是如何根据关联的值选择样式ItemDataRole(哪些接缝是在模型中存储数据的唯一合理通用的方法)?

请注意,有一个技巧。例如,如果您不使用检查状态,您可能会“重用”该状态以映射到您自己的东西,然后您有一个伪选择器......但这只是一种解决方法,甚至不是一般的解决方法。


QTreeWidget似乎您可以通过为您想要添加的任何项目创建一个专用的派生类QWidgetQ_PROPERTY然后,您可以在样式表中按名称访问该属性。

例如,参见Qt Center 上的“使用带有样式表的自定义 Q_PROPERTY”问题“使用动态属性时触发小部件的更新”。请注意 Qt 样式表示例的末尾

但是这些*View类的项目没有任何QWidgets 甚至QObjects (或者至少不是公共可访问的)。


也有可能提供自己的QAbstractItemDelegate,可能是从QStyledItemDelegate. 但这使得样式表交互变得更加困难。

有了像财产这样的简单员工,background-color这似乎是可行的。但是,您将如何模拟以及复杂集合中的许多其他样式border-imagepadding

更不用说一旦你编写了一个项目委托,代码就会被冻结。如果Qt更改呈现样式表的方式(以某种方式改进它),您将不会从中受益……这也会使逻辑/表示分离变得更加困难。现在你需要一个程序员来设置这些项目的样式,而不仅仅是一个支持 CSS 的图形专家......


那么有没有办法根据模型提供的属性/数据在样式表中进行子类化?

0 投票
1 回答
626 浏览

c++ - gluUnproject returning 0, seems to be related to modelview matrix

I'm working on a 2D image viewer, I want to retrieve openGL mouse position on texture but I can't get it to work if glTranslatef() or glScalef() calls are made on the modelview matrix. I'm using a QGLWidget , of the famous Qt library.

Here are the important calls : Resize function :

Display function :

... later in paintGL:

Now here is my function to retrieve the openGL coordinates :

}

So far , here is what I noticed: The code like this returns always (0,0) and GLU_FALSE is returned from gluUnproject. I read somewhere on a forum that it could be because of the modelview matrix, so I put the identity matrix instead, but,if I do it, I get exactly the coordinates of the mouse in the window...

Before , I dealt with the zoom using the orthographic projection, but I couldn't make it work perfectly, so to make it simpler I decided to retrieve openGL position, and use glTranslatef/glScalef instead .

If I remove all the translating / scaling stuff in the paintGL function, everything is working...but the zoom doesn't work :x)

I'm requesting your help to make this damned zoom to point working, using the gluUnProject solution;)

0 投票
0 回答
319 浏览

c++ - 另一个缩放到点问题

我有一个 2D 应用程序,它是一个图像查看器。我可以在窗口中平移图像,并且可以进行基本缩放。现在我想改进缩放,使其缩放到鼠标下方的点。到目前为止,我已经在谷歌上阅读了所有可能的内容,并且我已经接近一些可行的东西,但仍然找不到可行的东西,这就是我得到的:

它几乎可以工作,但不行,它不能完全缩放到请求的点,并且当图像很小并且不完全适合查看器(周围有黑色)时,它很乱并且不起作用。 ..

顺便说一句,这是用户放大鼠标滚轮事件处理程序时的代码:

openGLpos 函数如下:

有人可以帮我解决这个问题吗?

0 投票
1 回答
2792 浏览

qt - QWidget 作为视图项(Qt 模型视图控制器)

所以我想要的是一个显示可选小部件的 qlistview(显示按钮的图像和文本的标签(小部件是一个基于 qwidget 的小部件,它具有带有 aQLabel和 a的水平布局QPushButton))。该模型应该为每个项目存储图像路径和按钮文本(这似乎不是问题)。我成功创建了一个 QListView 派生小部件,但它只显示第一个列表项(这是自定义小部件)并且它是不可选择的。我创建了一个自定义模型、视图和委托,但我不知道该怎么做才能在所有列表项上显示小部件,而不仅仅是首先。这是完整的源代码链接:SOURCE CODE LINK

我用 5 个小部件项目的列表和 1 个小部件项目的列表分别运行应用程序。而且我认为它添加了小部件,但它在第一个上重叠了所有小部件(5 个项目构建在按钮上有更密集的阴影):

列表中的 5 个小部件: 使用循环中定义的 5 个小部件项编译和运行小部件

列表中的 1 个小部件: 使用循环中定义的 1 个小部件项目编译和运行小部件

如您所见,阴影有所不同。

这是代码的另一个副本:

Delegate.h 下面是代码delegate

委托.cpp

模型.h

模型.cpp

Prefs.h 包含列表视图的小部件:

首选项.cpp

Profile.h 必须用作列表项的小部件

配置文件.cpp

查看.h

查看.cpp

谁能帮我用想要的小部件填充所有列表项或告诉我我做错了什么或一些提示?在 qt 中是否可以将小部件作为这种 MVC 样式的列表/表格项?我在任何地方都找不到任何参考来实现这一目标。在 C++ GUI Programming with Qt、Advanced Qt Programming、Introduction to Design Patterns in C++ with Qt 4 和 Internet 上的其他几个地方搜索,但找不到任何相关QAbstractItemView::setIndexWidget内容,我认为这是将小部件添加为列表的方法查看项目。

谢谢!

0 投票
2 回答
16546 浏览

qt - 如何在 Qt 中重置模型?

我正在使用 Qt 模型/视图框架。当我重置模型中的数据时,我必须重置模型以让视图也更新。怎么做?我在 QAbstractItemModel 中发现了一个信号modelReset(QPrivateSignal);,这是解决它的方法吗?如何发出信号?谢谢。

0 投票
2 回答
887 浏览

asp.net - 引用空引用的模型视图

我有一个包含多个模型的视图页面,我无法显示数据,但我可以很好地保存任何添加的数据。它只是在页面加载时显示数据告诉我我传入的模型传递了一个空引用。

主视图:

我的模型:

控制器 - 对于每个模型,我都有一个 get 和 post 方法,除了PlayName只有一个 GET。

用户名控制器:

@Html.Partial("_UsernamePartial", Model.UsernameModel)显示Object reference not set to an instance of an object.,我不确定如何正确解决此问题。

用户名发帖:

用户名页面:

0 投票
1 回答
639 浏览

qt - 如何在 Qt 中显示子树项?

使用 Qt 的模型视图框架来表示树结构,例如 Qt 提供的简单树示例,树视图显示 root-tree-item。有什么方法可以显示子树项,例如根的子项?

0 投票
1 回答
473 浏览

qt - 如何将 QCalendarWidget 与 QDataWidgetMapper 一起使用?

我目前使用 QDataWidgetMapper 像这样(使用 PySide)映射我的日历小部件:

当我这样做时,它确实显示了正确的日期:

但我的问题是,当我单击不同的日期更改所选日期时,映射不会捕获更改并将其保存到数据库中。换句话说,如果我选择使用委托,映射器不会在模型或 setModelData 上发出 setData。

我错过了什么?

编辑:我找到了解决方案。我上面做的是对的,但是映射器没有自动提交数据。我所做的是:

0 投票
2 回答
1264 浏览

qt - 如何替换 QAbstractItemModel 中的一行?

在 QAbstractItemModel 中,可以使用 beginInsertRows、beginRemoveRows 等一些函数来插入和删除行。但是如何实现用另一个替换一个行项目呢?