2010-08-27 13 views
12

मेरे पास QScrollArea के साथ एक विजेट है और मैं इसे विजेट के साथ दिखाए जाने के ठीक बाद नीचे स्क्रॉल करना चाहता हूं। मैंने कोशिश की:प्रोग्रामेटिक रूप से स्क्रॉल QScrollArea

scrollArea->ensureVisible(0,100, 20, 20); 

यह केवल तब काम करता है जब उपयोगकर्ता द्वारा उपयोग किया जाता है (उदाहरण के लिए बटन दबाकर)। इसे विजेट contstructor या showEvent में डालकर काम नहीं करता है। क्या यह स्वचालित रूप से किया जा सकता है?

उत्तर

19

मेरा मानना ​​है कि आप अपने क्षैतिज और लंबवत स्क्रॉलबार में स्थितियों को सेट करके QScrollArea सामग्री को स्क्रॉल कर सकते हैं। Smth, इस तरह:

scrollArea->verticalScrollBar()->setValue(scrollArea->verticalScrollBar()->value() + 10); 
scrollArea->horizontalScrollBar()->setValue(scrollArea->horizontalScrollBar()->value() + 10); 

कोड ऊपर स्क्रॉल क्षेत्र की सामग्री को स्क्रॉल करना चाहिए 10 पिक्सल नीचे और 10 पिक्सल सही हर बार यह कहा जाता हो जाता है

आशा है कि यह मदद करता है, का संबंध

Edit0: अतिरिक्त कोड स्निपेट दिखाता है कि फ़ॉर्म के कन्स्ट्रक्टर में क्षेत्र को कैसे स्क्रॉल करना है:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    QLabel *imageLabel = new QLabel; 
    QImage image("my_large_image_file.JPG"); 
    imageLabel->setPixmap(QPixmap::fromImage(image)); 

    ui->scrollArea->setBackgroundRole(QPalette::Dark); 
    ui->scrollArea->setWidget(imageLabel); 

    ui->scrollArea->horizontalScrollBar()->setValue(100); 
    ui->scrollArea->verticalScrollBar()->setValue(100); 
} 
+0

दुर्भाग्यवश, जब विजेट कन्स्ट्रक्टर या शोवेन्ट से आवेदित किया जाता है, तो यह या तो काम नहीं करता है। – majaen

+0

मुझे लगता है कि आपको अपना कुछ कोड पोस्ट करना चाहिए, क्योंकि यह समाधान मेरे फॉर्म के विजेट कन्स्ट्रक्टर –

+0

में मेरे लिए काम करता है ठीक है, मुझे बग मिला। स्क्रॉलबार स्थापित करने से पहले आकार बदलना (अधिकतम आकार()) था, जो स्पष्ट रूप से एक अच्छा विचार नहीं है (हालांकि मुझे यकीन नहीं है कि उस तरह से स्क्रॉल एरिया व्यवहार क्यों प्रभावित हुआ)। – majaen

2

मैंने डीबग के साथ समय बिताया है ger और पता लगाएं कि scriollArea में कन्स्ट्रक्टर में 0 आकार हैं, इसलिए ऐसा लगता है कि जब सभी विजेट बनाए जाते हैं और दिखाई देते हैं तो केवल कुछ स्क्रॉल करना संभव है। खिड़की के शो में स्क्रॉलिंग ठीक काम करता है।

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