One way is to eat the mouse move event of the splitter handle. There are probably more elegant methods though. Here's a little implementation I made:
/* Header. */
#include <QSplitterHandle>
{
public:
Splitter();
void setAllowMove(bool allow);
bool allowMove();
protected:
private:
bool m_allowMove;
};
{
public:
SplitterHandle
(Qt
::Orientation orientation,
QSplitter* parent
);
protected:
};
#include <QListView>
#include <QTreeView>
#include <QSplitter>
#include <QDirModel>
#include <QDebug>
/* Demonstration. */
MainWindow
::MainWindow(QWidget *parent
){
Splitter *splitter = new Splitter;
splitter->addWidget(lv1);
splitter->addWidget(lv2);
splitter->setAllowMove(false); /* Use as required. */
setCentralWidget(splitter);
}
/* Splitter implementation. */
Splitter
::Splitter() : QSplitter(), m_allowMove
(true) {}
bool Splitter::allowMove()
{
return m_allowMove;
}
void Splitter::setAllowMove(bool allow)
{
m_allowMove = allow;
}
/* SplitterHandle implementation. */
SplitterHandle
::SplitterHandle(Qt
::Orientation orientation,
QSplitter* parent
) :{}
{
return new SplitterHandle(orientation(), this);
}
void SplitterHandle
::mouseMoveEvent(QMouseEvent * event
) {
if (static_cast<Splitter*>(splitter())->allowMove())
else
return;
}
/* Header. */
#include <QSplitterHandle>
class Splitter : public QSplitter
{
public:
Splitter();
void setAllowMove(bool allow);
bool allowMove();
protected:
QSplitterHandle *createHandle();
private:
bool m_allowMove;
};
class SplitterHandle : public QSplitterHandle
{
public:
SplitterHandle(Qt::Orientation orientation, QSplitter* parent);
protected:
void mouseMoveEvent ( QMouseEvent * event );
};
#include <QListView>
#include <QTreeView>
#include <QSplitter>
#include <QDirModel>
#include <QDebug>
/* Demonstration. */
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
Splitter *splitter = new Splitter;
QListView *lv1 = new QListView;
QListView *lv2 = new QListView;
splitter->addWidget(lv1);
splitter->addWidget(lv2);
splitter->setAllowMove(false); /* Use as required. */
setCentralWidget(splitter);
}
/* Splitter implementation. */
Splitter::Splitter() : QSplitter(), m_allowMove(true) {}
bool Splitter::allowMove()
{
return m_allowMove;
}
void Splitter::setAllowMove(bool allow)
{
m_allowMove = allow;
}
/* SplitterHandle implementation. */
SplitterHandle::SplitterHandle(Qt::Orientation orientation, QSplitter* parent) :
QSplitterHandle(orientation, parent)
{}
QSplitterHandle* Splitter::createHandle()
{
return new SplitterHandle(orientation(), this);
}
void SplitterHandle::mouseMoveEvent(QMouseEvent * event)
{
if (static_cast<Splitter*>(splitter())->allowMove())
QSplitterHandle::mouseMoveEvent(event);
else
return;
}
To copy to clipboard, switch view to plain text mode
Bookmarks