2010-12-22 10 views
8

चलाने से पहले तुरंत पाठ प्रदर्शित नहीं कर रहा है मेरे पास एक मूल लेबल है जो उपयोगकर्ता को इंगित करता है कि प्रोग्राम कई सेकंड के लिए निर्देशिका खोज रहा है। तो यह ...QLabel setText अन्य विधि

self.label.setText(QString("Searching...")) 
# method to search directories goes here 
self.label.setText(QString("Search Complete")) 

मेरी समस्या यह है कि लेबल कभी भी "खोज ..." प्रदर्शित नहीं करता है। निष्पादन हमेशा निर्देशिका को स्कैन करने के लिए विधि को चलाने के लिए सीधे कूदता प्रतीत होता है, और उसके बाद लेबल पाठ निर्देशिका समाप्त होने वाली विधि के बाद "पूर्ण खोज" पर सेट होता है।

अगर कोई यह बता सकता है कि यह क्यों हो रहा है या समस्या का समाधान करने का एक बेहतर तरीका सुझाता है तो मैं आभारी रहूंगा।

बहुत धन्यवाद

उत्तर

16

जीयूआई ब्लॉक कर रहा है आपका "खोज करने के लिए निर्देशिका विधि" इसलिए QLabel पाठ अद्यतन करने के लिए सक्षम नहीं है। आप अपनी खोज को नियमित अतुल्यकालिक बनाने या आसान तरीका जाने के लिए और खुद को अद्यतन करने के लिए मजबूर कर सकते हैं QLabel:

self.label.setText(QString("Searching...")) 
self.label.repaint() 
# method to search directories goes here 
self.label.setText(QString("Search Complete")) 
+0

यह बढ़िया है। आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। – Kim

+1

यह QLineEdit का उपयोग करके भी मेरे लिए काम करता है। –

+2

मैंने repapp() के बाद qApp-> processEvents() जोड़ा, और यह मेरे लिए काम किया। देखें http://stackoverflow.com/a/2066916/2706918 –

0

जोड़ें में शामिल हैं:

#include <qapplication.h> 

चलो क्यूटी प्रक्रिया घटनाओं:

self.label.setText(QString("Searching...")) 
qApp->processEvents(); 

नोट: repaint() जरूरी नहीं था।

संबंधित मुद्दे