2014-05-21 42 views
0

我开发了一个图像浏览器,用QSlider显示图像系列。我connncet QSlider的的valueChanged(int)以自定义的函数:QLabel慢慢地显示图像

QObject::connect(ui.imgIndexSlider, SIGNAL(valueChanged(int)), this,SLOT(onimgIndexSliderValueChanged(int))); 

当我拖动滑块,即QLabel节目将由QSlider value.It works.But改变的图像有一个问题,即如果你拖得很快,应用程序将不会运行可接受。 你能告诉我如何解决这个问题。 非常感谢。

the UI of my appliction

+0

你可以显示你的应用程序的截图,以便我们能够理解你在做什么? –

+0

这是我申请的屏幕截图:) – cloudending

回答

0

它不是从你的问题清楚了,但我假设你是显示像使用滑块幻灯片图像。当你快速滑动时,你的应用程序被冻结,即冻结? Qt在你的GUI线程中渲染图像。 如果图像都是高分辨率,那么渲染每幅图像需要更多的时间。 当你滑动的速度比Qt更快时可以渲染单个图像,你将会遇到问题。 所以这是我理想的情况做,如果我处在你的位置:

  1. 实现自定义算法将读取到的图像文件,并创建 更小尺寸的预览图像。由于您只有 在内存中生成像素映射,因此可以通过多线程来完成此操作。 您可以在启动应用程序时执行此操作。
  2. 将所有预览显示为类似于 Powerpoint的左侧窗格中的可滚动区块。您可以通过使用QLabel来让Qt渲染 这些预览,从而减少一些编码。
  3. 有一个中央小部件,它占用了窗口 的主要块,它将使用您的自定义算法呈现图像。如果 滑块未运行,您的 算法将会读取实际图像。如果滑块正在运行足够快那么您只需要 缩放您的预览图像并显示在小部件中。

如果您发现任何难以理解的内容,请随时提问。 :)