2014-05-21 3 views
0

Je développe un navigateur d'image pour montrer des séries d'image avec QSlider. Je connncet valueChanged (int) de QSlider à une fonction d'auto-défini:QLabel montre l'image lentement

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

quand je fais glisser le curseur, l'image qui montre QLabel sera modifié par QSlider value.It works.But il y a un problème que si vous faites glisser rapidement, l'application ne fonctionnera pas de manière acceptable. Pourriez-vous me dire comment réduire ce problème. Merci beaucoup.

the UI of my appliction

+0

Pouvez-vous montrer une capture d'écran de votre application afin que nous puissions comprendre ce que vous faites? –

+0

ceci est une capture d'écran pour mon application :) – cloudending

Répondre

0

On ne sait pas beaucoup de votre question, mais je suppose que vous montrer des images comme un diaporama à l'aide du curseur. Lorsque vous le faites glisser rapidement, votre application est étranglée, c'est-à-dire qu'elle se fige? Qt est le rendu de l'image dans votre thread graphique. Si les images sont toutes en haute résolution, le rendu de chaque image prendra beaucoup plus de temps. Lorsque vous glissez plus vite que Qt peut rendre une seule image, va rencontrer. Voici donc ce que je idéalement si j'étais à votre place:

  1. implémenter un algorithme personnalisé qui va lire le fichier image et créer une image de prévisualisation de taille beaucoup plus petite. Puisque vous êtes seulement générant un pixmap en mémoire, vous pouvez le faire par multi-threading. Vous pouvez le faire lorsque votre application est lancée.
  2. Afficher tous les aperçus comme des tuiles défilables sur le panneau de gauche, similaires à Powerpoint. Vous pouvez réduire certains codes en laissant Qt afficher ces aperçus en utilisant QLabel.
  3. Avoir un widget central qui occupe le morceau majeur de la fenêtre qui rendra les images en utilisant votre algorithme personnalisé. Votre algorithme sera tel qu'il lira l'image réelle si le curseur ne fonctionne pas. Si le curseur tourne assez rapidement alors vous avez simplement besoin de mettre à l'échelle vos images d'aperçu et d'afficher dans le widget.

N'hésitez pas à poser des questions si vous trouvez quelque chose de difficile à comprendre. :)