möchte meinen Splittern eine Farbe geben
Implementierung mainwindow:
Code: Alles auswählen
MainWindow::MainWindow()
{
m_pVSplitter = new Splitter( Qt::Vertical, this );
m_pHSplitter = new Splitter( Qt::Horizontal, m_pVSplitter );
.
.
init();
.
.
setCentralWidget( m_pMdiArea );
}
Code: Alles auswählen
#include <QtGui/QSplitter>
#include <QtGui/QSplitterHandle>
class Splitter : public QSplitter {
public:
Splitter(Qt::Orientation orientation, QWidget *parent = 0)
: QSplitter(orientation, parent)
{
setHandleWidth(7);
SplitterHandle *sp = createHandle();
}
protected:
QSplitterHandle *createHandle() {
return new SplitterHandle(orientation(), this);
}
private:
class SplitterHandle : public QSplitterHandle {
public:
SplitterHandle(Qt::Orientation orientation, QSplitter *parent = 0)
: QSplitterHandle(orientation, parent) { }
void paintEvent(QPaintEvent *event) {
QPainter painter(this);
QLinearGradient gradient(0, 0, rect().width(), rect().height());
if (orientation() == Qt::Horizontal) {
gradient.setStart(rect().left(), rect().height()/2);
gradient.setFinalStop(rect().right(), rect().height()/2);
} else {
gradient.setStart(rect().width()/2, rect().top());
gradient.setFinalStop(rect().width()/2, rect().bottom());
}
painter.fillRect(event->rect(), QBrush(gradient));
}
};
};
das Gezeichnete erscheint nicht auf den Splittern
sondern an den Koordinaten 0,0 und 29,99
Nach einem Debug und stellte ich fest, dass der this Pointer in der Methode createHandle eben in der Variablen rect diese Koordinante besitzt
was mache ich falsch?
geht das mit Styles auch?