【问题标题】:Get the file name of a Qt label image获取一个Qt标签图片的文件名
【发布时间】:2017-06-17 13:53:23
【问题描述】:

我将 Qt creator 用于 c++ gui。我正在制作二十一点游戏。我希望能够将标签更改为卡片的背面(称为“backside.png”)、卡片的正面(称为“frontside.png”)。

当用户单击其中一个标准按钮时,我想检查标签上的图像(称为“cardlabel”)是显示卡片的背面还是卡片的正面。

如果显示的是背面,那么我将更改标签以显示卡片的正面,反之亦然。

是否有人能够(通过代码)向我展示,我如何询问“cardlabel”,它当前使用的是什么图像名称,并检查它当前在哪一侧。这对我的项目将是一个巨大的帮助。谢谢!!

【问题讨论】:

  • 您可以在QLabel 上设置任何QPixmap。 API 很灵活,它不需要这个QPixmap 来自一个文件。您可以从任何 IO 设备(例如网络)获取QPixmap,也可以在代码中硬编码。简而言之,一旦加载了QPixmap 对象,就无法返回文件名。 所以,一旦你说QPixmap("file.png");,就会从文件中读取图像数据并将其加载到QPixmap,即使数据来自文件的事实也不再可从 QPixmap 获得。
  • 我认为你需要将这个状态信息保存在另一个变量中,也许有一个单独的QString 来保存当前正在加载的文件的名称QPixmap。 . .
  • 为什么不从 QLabel 继承,例如创建您自己的 Card 类,并在其中存储信息,无论它是显示卡片的正面还是背面。你知道,OOP 风格。

标签: c++ image qt


【解决方案1】:

我知道这个线程很旧,但我可以建议您在每个对象中“携带”一个包含像素图值的变量,以便您可以在将其影响到 setPixmap 之前读取/更改它。

我的代码是用 Python 编写的,但你可以翻译 :)

self.ui.qlabel.img = "img/light_red.png"
if someRandomCondition:
      self.ui.qlabel.lum = "img/light_green.png"
else:
      self.ui.qlabel.lum = "img/light_red.png"
self.ui.qlabel.setPixmap(QPixmap(self.ui.qlabel.lum))
print(self.ui.qlabel.lum)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多