繁体   English   中英

有没有办法检查 QLabel 像素图是否设置为特定的内容?

[英]Is there a way to check if QLabel pixmap is set to something particular?

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

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

请注意,此技术仅在您自己的应用程序中开始拖动操作时才有效。 当然,如果拖动操作来自其他应用程序,它将不起作用,因为在这种情况下,源小部件不在程序的进程空间中,因此无法获得指向它的指针。

一种稍微优雅的替代方法是让源小部件向QMimeData对象添加一些标识数据,然后在QDrag对象上调用setMimeData() ,然后再对其调用exec() 然后接收小部件可以查看QDropEvent::mimeData()返回的QMimeData对象以检索该信息。 这更好一点,因为它可以跨进程边界工作,并且更安全,因为您没有不相关的小部件取消对彼此的指针引用或尝试向下转换 QObject 指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM