मैं कुछ ऐसा करने की कोशिश कर रहा हूं। मेरे पास एक निश्चित विजेट (शीर्ष) है, और एक गैर-निश्चित विजेट (नीचे) है। मैं चाहता हूं कि उपयोगकर्ता सामान्य रूप से स्प्लिटर हैंडल का उपयोग करने में सक्षम हो, लेकिन मैं नहीं चाहता कि विंडो निश्चित विजेट में स्थान जोड़ने के लिए आकार बदल दे। दोनों विगेट्स पर setSizePolicy का उपयोग करने के लिए मेरे लिए काम नहीं किया, और न तो एक या दोनों विजेटों पर setStretchFactor का उपयोग किया।
मैंने क्यूएसप्लिटर को उपclassing समाप्त कर दिया ताकि मैं एक resizeEvent लागू कर सकूं जो स्प्लिटर आकार बदलने के बाद स्प्लिटर को स्थानांतरित करेगा। यह कोड मानता है: केवल दो विजेट हैं। शीर्ष [0] आकार बदलने योग्य है, और नीचे [1] नहीं होना चाहिए।
MySplitter::resizeEvent(QResizeEvent *event) {
/* The first resizeEvent is -1 for height and width, because it was
invisible before. */
if (event->oldSize().height() != -1) {
int diff;
QList<int> previousSizes = sizes();
QSplitter::resizeEvent(event);
QList<int> newSizes = sizes();
/* The bottom widget is the fixed one, so find out if that is to
grow or shrink. */
diff = newSizes[1] - previousSizes[1];
if (diff > 0) {
/* Keep the bottom from growing by giving the size to the top. */
newSizes[0] += diff;
newSizes[1] -= diff;
}
else {
/* Steal size from the top to keep it from shrinking. */
newSizes[0] -= diff;
newSizes[1] += diff;
}
setSizes(newSizes);
}
else
QSplitter::resizeEvent(event);
}
:
यहाँ resizeEvent कि मैंने लिखा है
स्रोत
2013-10-17 00:39:22