Qt在新窗口中显示图像

时间:2010-04-09 06:30:26

标签: qt

我对Qt和GUI编程很天真。

Qt jpg image display

显示图像的步骤工作正常,感谢您提供。但是当我点击radiobutton时我想要显示图像。

我创建了一个插槽,并将按钮单击事件连接到插槽(dispImage是我的插槽)。我的插槽只包含用于显示图像的代码(此链接中的第一个答案)。

我能够编译并运行它。但是o / p不是我们想要的。

点击按钮,图像窗口会闪烁一秒钟然后消失。

还有一点要分享,我尝试使用qt示例中出现的windowsflags示例。

在此示例中,我想在我们创建的预览窗口中显示图像。即使这对我也没有用。

请提供解决方案。

提前致谢。

2 个答案:

答案 0 :(得分:4)

这种情况正在发生,因为您连接到插槽的方法是创建在堆栈上显示图像所需的所有对象,并且当该方法返回时它们将超出范围并被销毁。链接的示例在方法结束时运行事件循环,因此在程序退出之前,对象不会超出范围。

您可以通过创建具有应用程序生存期的类的必要对象成员变量来解决此问题。

答案 1 :(得分:1)

Stu的答案是正确的。

如果你不明白他在说什么,你可能想在进入Qt之前先熟悉一下C ++。您引用的示例与您尝试的示例不同。它是一个main()函数,它的堆栈变量在进程退出之前不会超出范围(当main()返回时)。一旦方法返回,方法中的堆栈变量就会超出范围。

使用您引用作为方法模板的示例,您需要将QGraphicsView对象声明为radioslot对象的头文件中的类变量。这将使它保持在范围内,直到您的无线电广播对象被销毁。