- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在创建排序算法的可视化。我有一个 QGraphicsRectItems
vector ,它们是在应用程序启动时生成的具有不同高度和相同宽度的列。它们被打乱,然后添加到 QGraphicsScene
。名为“算法”的类对用于设置列高的浮点值 vector 进行排序。在交换时——它用两个整数向主类发出一个信号,所以它看起来像这样:
emit comparison(array[first element to swap], array[second element to swap]);
主类中的函数(on_comparison)与该信号相关联。当我试图交换这两个元素时出现了问题。我创建了一个变量来为其设置 n
列位置。之后我尝试设置列的位置,所以我做了类似的事情:
void on_comparision(int n, int k)
{
auto nColumnPos = columns[n]->pos().x();
columns[n]->setX(columns[k]->pos().x());
columns[k]->setX(nColumnPos);
}
但它不起作用。立场没有改变。此外
qDebug() <<nColumnPos;
显示值 = 0。
我想知道我的整个程序是否有效,所以我决定实现 2 个排序算法,将 2 个相邻的元素交换,并将 on_comparison
函数修改为
columns[n]->setX(columns[n].pos().x() + columnsWidth);
columns[n]->setX(columns[n].pos().x() - columnsWidth);
它有效但没有给出令人满意的结果。此功能仅适用于交换 2 彼此附近元素的排序算法,例如。冒泡排序/鸡尾酒排序。
我一直在寻找答案,但没有找到任何有用的信息。
代码如下: https://gist.github.com/anonymous/e612e35a7c14eeb650099d4b997f437d
最佳答案
我已经设法解决了这个问题。 on_comparision 函数应如下所示:
auto nRect = columns[n]->rect();
auto kRect = columns[k]->rect();
auto nColumnPos = nRect.left();
auto kColumnPos = kRect.left();
nRect.moveLeft(kColumnPos);
kRect.moveLeft(nColumnPos);
columns[n]->setRect(nRect);
columns[k]->setRect(kRect);
std::swap(columns[n], columns[k]);
代替
auto nColumnPos = columns[n]->pos().x();
columns[n]->setX(columns[k]->pos().x());
columns[k]->setX(nColumnPos);
std::swap(columns[n], columns[k]);
关于c++ - Qt:交换 QGraphicsRectItem 位置的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475882/
我正在从 QGraphicsRectItem 创建对象并添加到 Qgraphicscene(scene)。我想获取对象 (qgraphicsrectitem) 的每个 movement(pos),以便
我实际上正在实现一个类,该类允许用户在按下鼠标时绘制任意数量的矩形。 这是处理这种情况的 QGraphicsScene 的代码: void ImageGraphicsSceneW::mousePres
我一辈子都弄不明白这个问题,但我已将其归结为一个自给自足的问题。 我想做的是围绕在 QGraphicsScene 中选择的项目绘制一个 QGraphicsRectItem。绘制矩形后,可以以将所有项目
我在 qgraphicsScene 上绘制了一个 qgraphicsRectItem。对于鼠标事件,它会在场景上移动、调整大小和重新定位,即选择项目、mousePress 和 mouseMove。我怎
我一直在尝试找到一种方法来用任何颜色填充 QGraphicsRectItem 的实例,比如说红色,但是我没有找到一个明确的方法来完成这个天真的任务,如果你能的话那就太好了提供一些提示、链接等。 非常感
我试图在将 QGraphicsRectItem 添加到场景后移动它。它会移动,但与鼠标指针有一定的偏移量。我认为它只是将鼠标指针位置添加到其原始位置。我不知道如何解决这个问题。 这是我的代码: cla
我试图在用户移动 QGraphicsRectItem 时获取它的子类的 boundingRect() 。但是,随着矩形在场景中移动,boundingRect() 返回的矩形始终返回边界矩形的原始值。下
我想要一个在线监控系统,可以判断形状当前的位置,但是我得到了非常奇怪的项目坐标,而且每次我创建新的并拖动它时它的尺寸都会增加 1。 初始位置( map 大小为 751 x 751,通过输出到 qDeb
我正在逐步完成一个使用 Qt 和 C++ 的初学者(非基于类的)项目。该项目的主要目标是学习设计模式。但是在我开始学习如何使用和实现不同的设计模式以改进代码之前,我必须先有一个没有任何设计模式的工作实
我正在尝试创建一个可调整大小的 QGraphicsRectItem,并可以选择不同的绘制样式。 如果我创建一个仅具有调整大小功能的简单矩形,那么它会按预期工作: class Rectangle(QtW
我有 QGraphicsView、QGraphicsScene 和 QGraphicsRectItem。QGraphicsScene 中的 QGraphicsRectItem 和 QGraphicsV
我编写了这段代码来将 bullet 旋转到 enemy: void Bullet::turnToFutureLocation(Enemy *enemy) { QLineF ln(mapToSc
我正在创建排序算法的可视化。我有一个 QGraphicsRectItems vector ,它们是在应用程序启动时生成的具有不同高度和相同宽度的列。它们被打乱,然后添加到 QGraphicsScene
如何在 Qt 中的 qgraphicsrectitem 中制作自动收报机我试着跟随 rect = new QGraphicsRectItem; text = new QGraphicsText
如果我越过像 QGraphicsRectItem 这样的矩形,我想更改光标。 我有一个继承自 QGraphicsView 的类,矩形显示在 QGraphicScene 中。 我使用 eventFilt
我想做的是: 我有一个带 QGraphicsView 的小 GUI。在此图形 View 中,我加载了一张图片: // m_picture is QPixmap // image is QImage /
我第一次尝试 PyQT,目的是最终创建一些数据的非常基本的图形表示。 我目前正在尝试将两个 QGraphicsTextItem 装在 QGraphicsRectItem 中,我对看到的结果有一些疑问。
我是一名优秀的程序员,十分优秀!