gpt4 book ai didi

c++ - 在 Qt 中告诉主类一个项目被点击

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:26 30 4
gpt4 key购买 nike

情况:

我在 QT 中有一个 Dialog 类,我在上面绘制了一个正方形光栅。正方形在 MySquare 类 (MySquare: QGraphicsItem) 中实现。

在 MySquare 内部有许多函数 (mysquare.h protected:)

    void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);

当我点击一个正方形时,它会使用以下函数为我提供正方形的相对坐标。

void MySquare::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
update();
QGraphicsItem::mousePressEvent(event);
qDebug() << "mouse Pressed";
qDebug() << "coordinates:";
qDebug() << "X:"<< x/w << " Y:" << y/h ;
}

enter image description here

其中x和y是光栅中的x和y位置,w和h代表宽度和高度

但是我的问题是如何让我的对话框类知道点击了哪个方 block ?

最佳答案

您可以通过Qt 的信号/槽机制在MySquare 和您的Dialog 之间进行通信。当一个方 block 被点击时,它会发出一个信号,并且对话框有一个连接到该信号的插槽。

要识别哪个方 block 发送了信号,有几种可能性:

  • 正方形的坐标在信号中传递
  • 发出信号的 MySquarethis 指针被传递
  • 在插槽中,您可以使用sender 函数来确定谁发出了信号。

关于c++ - 在 Qt 中告诉主类一个项目被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14171087/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com