मैं इसे उपरोक्त कोड पर आधारित करता हूं लेकिन यह दोनों स्प्लिटर उन्मुखता को संभालता है। मैंने अभी गैर-अपारदर्शी आकार बदलने और गैर-ढहने वाले बच्चों को प्राथमिकता दी है। पकड़ में तीन समांतर रेखाएं होती हैं। आप हैंडल चौड़ाई के साथ खेल सकते हैं, लेकिन 7 पर पकड़ विंडोज पर अच्छा लग रहा है; लिनक्स या मैक में चेक नहीं किया है।
void helper::decorateSplitter(QSplitter* splitter, int index)
{
Q_ASSERT(splitter != NULL);
const int gripLength = 15;
const int gripWidth = 1;
const int grips = 3;
splitter->setOpaqueResize(false);
splitter->setChildrenCollapsible(false);
splitter->setHandleWidth(7);
QSplitterHandle* handle = splitter->handle(index);
Qt::Orientation orientation = splitter->orientation();
QHBoxLayout* layout = new QHBoxLayout(handle);
layout->setSpacing(0);
layout->setMargin(0);
if (orientation == Qt::Horizontal)
{
for (int i=0;i<grips;++i)
{
QFrame* line = new QFrame(handle);
line->setMinimumSize(gripWidth, gripLength);
line->setMaximumSize(gripWidth, gripLength);
line->setFrameShape(QFrame::StyledPanel);
layout->addWidget(line);
}
}
else
{
//this will center the vertical grip
//add a horizontal spacer
layout->addStretch();
//create the vertical grip
QVBoxLayout* vbox = new QVBoxLayout;
for (int i=0;i<grips;++i)
{
QFrame* line = new QFrame(handle);
line->setMinimumSize(gripLength, gripWidth);
line->setMaximumSize(gripLength, gripWidth);
line->setFrameShape(QFrame::StyledPanel);
vbox->addWidget(line);
}
layout->addLayout(vbox);
//add another horizontal spacer
layout->addStretch();
}
}
के साथ हैंडल वापस करने के लिए QSplitter :: createHandle() को ओवरराइड कर सकते हैं बहुत बहुत धन्यवाद :)! – Narek
यह शानदार है। मैं केवल इतना जोड़ूंगा कि मैं एक QHBoxLayout पसंद करता हूं क्योंकि तब मैं क्षैतिज रेखा पर 'अधिकतम विड्थ' (क्षैतिज स्प्लिटर के लिए) असाइन कर सकता हूं। – Phlucious
उपरोक्त क्योंकि यह काम करता है, लेकिन यह वास्तव में एक क्यूटी बग के लिए एक बेकार कामकाज की तरह लगता है ... –