Qt QSplitte分割器使用(用户手动改变窗口大小)
头文件:
#ifndef CTESTDLG_H
#define CTESTDLG_H
#include <QDialog>
class QSplitter;
class QLabel;
class QLineEdit;
class QPushButton;
class CTestDlg : public QDialog
{
Q_OBJECT
public:
CTestDlg(QWidget *parent = 0);
private:
QSplitter * m_pSplitter;
QLabel * m_pLabel;
QLineEdit * m_pLineEdit;
};
#endif
源文件:
#include "CTestDlg.h"
#include <QSplitter>
#include <QLabel>
#include <QLineEdit>
#include <QVBoxLayout>
CTestDlg::CTestDlg(QWidget *parent) :QDialog(parent)
{
m_pSplitter = new QSplitter(this);
m_pLabel = new QLabel("Area", m_pSplitter);
//水平方向靠右.
m_pLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
m_pLineEdit = new QLineEdit(m_pSplitter);
//用户不能手动将子控件大小调为0.
m_pSplitter->setChildrenCollapsible(false);
//设置分界线的样式.
m_pSplitter->setStyleSheet("QSplitter::handle { background-color: black }");
//设置分界线的宽度.
m_pSplitter->setHandleWidth(20);
//找具体的分界线.
QSplitterHandle *handle = m_pSplitter->handle(1);
if (handle)
{
//handle->setFixedWidth(5);
使分界线拖动无效.
//handle->setDisabled(true);
}
QVBoxLayout * pMainLayout = new QVBoxLayout;
pMainLayout->addWidget(m_pSplitter);
setLayout(pMainLayout);
}