我是用QT4.8的,我在A类中调用了B类,但是会导致B类的鼠标定位不准确,请问该怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是用QT4.8的,我在A类中调用了B类,但是会导致B类的鼠标定位不准确,请问该怎么解决相关的知识,希望对你有一定的参考价值。

但是A类的鼠标位置是准确的
A类和B类是我自己定义的两个不同的类

参考技术A 有程序代码吗?
可能是坐标转换的问题,也可能是鼠标响应的问题。

我曾经遇到过graphicsView框架下无法响应鼠标移动的问题,后来用如下函数解决:

eventFilter(QObject* object, QEvent* event)
//鼠标移动响应 ;
if (object == ui.graphicsView->viewport() && event->type() == QEvent::MouseMove)

QMouseEvent* mouse = static_cast<QMouseEvent*>(event);
QPointF pos = ui.graphicsView->mapToScene(mouse->pos()); //得到鼠标指向坐标
statusBar()->showMessage(QString("(%1,%2)").arg(pos.x()).arg(pos.y()));//显示坐标




希望对你能有帮助。

在 C++ 中从同一类中的另一个方法调用方法

【中文标题】在 C++ 中从同一类中的另一个方法调用方法【英文标题】:Calling a method from another method in the same class in C++ 【发布时间】:2010-11-02 06:28:09 【问题描述】:

我在一个类中为a() 编写了一个方法(效果很好)。我想在该类中编写另一个调用第一个方法的方法:

void A::a() 
  do_stuff;


void A::b() 
  a();
  do_stuff;

我想我可以重写b() 所以b(A obj) 但我不想。在java中你可以做类似this.a()的事情。

我想做obj.b(),其中obj.a() 将作为obj.b() 的结果而被调用。

【问题讨论】:

你能说清楚你想要什么吗? 哦,哎呀!我有一个不同的错误导致这个 - 我刚刚修复了。 确保 a 在 b 之前定义,如果 b 正在调用 a 如果 A::a() 中有变量,那么如何访问 A::b() 中的变量? 【参考方案1】:

在一种情况下,您可能会得到一些意想不到的结果。也就是说,如果A::a() 是虚拟的,obj 实际上具有类型DerivedFromA,并且 DerivedFromA::a 覆盖A::a。在这种情况下,简单的调用a(); 或更详细的this-&gt;a(); 不会调用A::a,而是调用DerivedFromA::a()。

现在,这可能是有意的,因为类 A 将 a() 声明为虚拟的。但是,如果您真的不是这个意思,您可以通过将调用编写为

来忽略虚拟
void A::b()

    A::a(); // or
    this->A::a(); //Both ignore the virtual-ness of a()
    

【讨论】:

【参考方案2】:

你所拥有的应该可以正常工作。如果您愿意,可以使用“this”:

void A::b() 
  this->a();
  do_stuff;

void A::b() 
  this->A::a();
  do_stuff;

void A::b() 
  A::a();
  do_stuff;

但你所拥有的也应该有效:

void A::b() 
  a();
  do_stuff;

【讨论】:

我收到一个错误:invalid use of 'this' in non-member function 在引用类的方法/属性时使用this 是否更好? 如果A::a() 中有变量,那么如何访问A::b() 中的变量?【参考方案3】:

你在那里写的应该可以正常工作。在 C++ 中,如果您在 b 中调用 a 并且两者都是某个类 A 的实例方法,那么您不需要限定它。 ab 都在彼此的范围内。

【讨论】:

【参考方案4】:

看起来您在块中编写的代码可以正常工作。只需确保在类中正确定义了 a() 和 b() 方法即可。

【讨论】:

【参考方案5】:

这正是你正在做的。

【讨论】:

答案^^^这里没有用;下面的+44分更有洞察力。从长远来看,我建议更改顺序。我将解释原因:我是通过 Google 来到这里的,但答案对我没有帮助 - 但下面的语法答案让我意识到我只是忘记了一个 ()。因此,下面 +44 分的答案对我的案例更有帮助,而“你在做什么”评论实际上几乎没有添加任何内容。

以上是关于我是用QT4.8的,我在A类中调用了B类,但是会导致B类的鼠标定位不准确,请问该怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

如何使用方法更改指针?

在另外一个类中调用一个窗口类中的listbox的控制变量的成员函数出错!

java怎么实现在一个类中放置监听器,而在另一个类中事件呢?

MFC 如何在一个类中使用另一个类中定义的变量

Java中如何调用枚举类中的数组

Qt 4.8 endInsert/RemoveRows 导致内存泄漏?