Qt在新窗口中显示图像
问题描述:
我对Qt和GUI编程很无知。Qt在新窗口中显示图像
用于显示图像给出的程序工作正常,并感谢您提供。但是我想在单击单选按钮时显示图像。
我创建了一个插槽,并将按钮单击事件连接到插槽(dispImage是我的插槽)。我的插槽仅包含正在显示图像的代码(此链接中的第一个答案)。
我可以编译并运行它。但是o/p不是我们想要的。
点击按钮,图像窗口闪烁一秒钟并消失。
还有一点需要分享的是,我尝试了qt示例中存在的windowsflags示例。
在这个例子中,我想在我们创建的预览窗口上显示图像。即使这对我也不起作用。
请为我提供解决方案。
在此先感谢。
答
发生这种情况的原因是,您连接到插槽的方法正在创建在堆栈上显示图像所需的所有对象,并且当该方法返回时它们将超出范围并被销毁。链接的例子有在方法结尾处运行的事件循环,所以在程序退出之前对象不会超出范围。
您可以通过使具有应用程序生存期的类的必需对象成员变量来解决此问题。
答
Stu上面的答案是正确的。
如果你不明白他在说什么,那么在跳入Qt之前,你可能想更熟悉C++。您引用的示例与您尝试执行的示例不同。这是一个main()函数,它的堆栈变量不会超出范围,直到进程退出(即main()返回时)。一旦方法返回,方法中的堆栈变量就会超出范围。
使用您引用的示例作为您的方法的模板,您需要将QGraphicsView对象声明为您的无线电时隙对象的头文件中的类变量。这将使它保持在范围内,直到你的无线电时隙对象被破坏。