我将 QPixmap 传递给 QAbstractButton::setIcon 而不是 QIcon,但我没有收到错误...为啥?
Posted
技术标签:
【中文标题】我将 QPixmap 传递给 QAbstractButton::setIcon 而不是 QIcon,但我没有收到错误...为啥?【英文标题】:I'm passing a QPixmap to QAbstractButton::setIcon instead of a QIcon, but I'm not getting an error...why?我将 QPixmap 传递给 QAbstractButton::setIcon 而不是 QIcon,但我没有收到错误...为什么? 【发布时间】:2019-06-11 15:34:20 【问题描述】:只是想了解为什么我没有在这里遇到错误。 QAbstractButton(实际上我使用的是 QPushButton,但我认为这两种方式都一样)成员函数 setIcon 接受一个 QIcon 参数...
函数看起来像:void setIcon(const QIcon &icon)
,我认为它没有过载。那么为什么我可以调用该函数并给它一个 QPixmap 作为参数,却没有报错呢?
这一行:PB->setIcon(QPixmap());
,其中PB
是一个 QPushButton 对象,不会给我一个错误,我只是想知道为什么,因为我是 C++ 新手,也许我错过了一些更基本的东西。任何帮助表示赞赏!
【问题讨论】:
【参考方案1】:您不会收到错误,因为您提供给 setIcon()
函数的 QPixmap()
参数隐式转换为 QIcon
对象。或者,更好的说法是,编译器隐式地从QPixmap
中创建了一个QIcon
对象,因为存在以下构造函数:
QIcon::QIcon(const QPixmap &)
【讨论】:
啊,好的,谢谢,我以前看过这个!并且可以在此过程中的任何地方使用explicit
关键字以使编译器不进行隐式转换吗?如果是这样,关键字会去哪里?
QIcon
构造函数本身需要声明为explicit
。以上是关于我将 QPixmap 传递给 QAbstractButton::setIcon 而不是 QIcon,但我没有收到错误...为啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 QPainter 在 QWidget 上绘制 QPixmap Rects