有没有一种方法可以检查QLabel像素图是否设置为某些特定值?

时间:2019-01-12 21:20:39

标签: c++ qt

我正在创建一个Qt应用程序,我有一个部分可以将QLabel的帧从一帧拖动到另一帧,我需要知道拖动了哪个标签,但是我不知道如何检查。有功能或方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:0)

假设您正在通过重写某些类型的QWidget的子类中的dropEvent(QDropEvent *)方法来处理放置动作,则可以调用QDropEvent::source()来获取指向用户单击的窗口小部件的指针。开始拖动。然后,您可以使用该指针在已知拖动源的指针表/列表中进行查找,或者在其上使用dynamic_cast<QLabel*>()尝试从其中获取QLabel指针,以便您可以在其上调用QLabel方法,等等。

请注意,只有在您自己的应用程序中开始拖动操作时,此技术才有效。当然,如果拖动操作来自其他应用程序,则将无法正常工作,因为在这种情况下,source-widget不在程序的进程空间中,因此无法获取指向它的指针。

一种稍微更精致的替代方法是让Source-widget向QMimeData对象添加一些标识数据,然后在setMimeData()对象上调用QDrag呼叫exec()。然后,接收小部件可以查看QMimeData返回的QDropEvent::mimeData()对象以检索该信息。这样比较好,因为它可以跨进程边界工作,并且更安全,因为您没有不相关的小部件,它们相互之间不相互引用指针或尝试向下转换QObject指针。