QT界⾯布局——停靠窗⼝QDockWidget+分割窗⼝
QSplitter+堆叠窗⼝QSt。。。
irig窗⼝的基本布局如下
1、分割窗⼝ QSplitter
//分割窗⼝使⽤QSplitter类
QSplitter *splitterMain =new QSplitter(Qt::Horizontal,0); // 对窗⼝进⾏⽔平分割,0代表有分割的窗⼝为主窗⼝,也可以选择要分割的窗⼝
QTextEdit *textLeft =new QTextEdit(QObject::tr("Left Widget"), splitterMain); // 将控件插⼊主分割窗⼝中,
注意如果这样插⼊每个控件都会是⼀个窗⼝怎样学习好
textLeft->tAlignment(Qt::AlignCenter); // 设置⽂本的对齐⽅式
//右部分分割窗⼝
QSplitter *splitterRight =new QSplitter(Qt::Vertical,splitterMain); // 对分割窗⼝再进⾏分割
splitterRight->tOpaqueResize(fal); // 分割条是否实时更新,fal为拖拽完更新,true为实时更新
QTextEdit *textUp =new QTextEdit(QObject::tr("Top Widget"), splitterRight);
textUp->tAlignment(Qt::AlignCenter);
QTextEdit *textBottom =new QTextEdit(QObject::tr("Bottom Widget"), splitterRight);
textBottom->tAlignment(Qt::AlignCenter);
splitterMain->tStretchFactor(1,1); // 设定可伸缩控件,第⼀个参数是指定设置第⼏个控件,从0开始,第⼆个参数感觉是伸缩幅度吧(为⼤splitterMain->tWindowTitle(QObj
ect::tr("Splitter"));
splitterMain->show();
⽂本对齐⽅式
Qt::AlignLeft // 左对齐
Qt::AlignRight // 右对齐
Qt::AlignCenter // ⽂字居中
Qt::AlignUp // ⽂字与顶端对齐
2、堆叠窗⼝ QStackedWidget
⽅式⼀:QStackedWidget 类
tWindowTitle(tr("StackedWidget")); // 设置窗⼝标题
list =new QListWidget(this); // 新建⼀个QListWidget控件对象
/
勺子 英文
/在新建的QListWidget控件中插⼊三个条⽬,作为选择项
list->inrtItem(0,tr("Window1"));
list->inrtItem(1,tr("Window2"));
list->inrtItem(2,tr("Window3"));
//创建三个QLabel标签控件对象,作为堆栈窗⼝需要显⽰的三层窗体
label1 =new QLabel(tr("WindowTest1"));
label2 =new QLabel(tr("WindowTest2"));
label3 =new QLabel(tr("WindowTest3"));
stack =new QStackedWidget(this);
//新建⼀个QStackedWidget堆栈窗体对象
//将创建的三个QLabel标签控件依次插⼊堆栈窗体中
stack->addWidget(label1);
stack->addWidget(label2);
stack->addWidget(label3);
QHBoxLayout *mainLayout =new QHBoxLayout(this);
//对整个对话框进⾏布局
mainLayout->tMargin(5); // 设定对话框(或窗体)的边距为5
mainLayout->tSpacing(5); // 设定各个控件之间的间距为5
mainLayout->addWidget(list);
mainLayout->addWidget(stack,0,Qt::AlignHCenter);
mainLayout->tStretchFactor(list,1); // 测试后感觉,第⼆个参数⼤于0为可伸缩控件,1表⽰⽐例为1份,对于stack为1/3宽度
mainLayout->tStretchFactor(stack,3);
connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(tCurrentIndex(int)));
meggings
// 将QListWidget的currentRowChanged信号与QStackedWidget的tCurrentIndex槽函数相连,tCurrentIndex的index按插⼊顺序从0开始,与QListWidget的条⽬顺⽅式⼆:QMidArea类和QMdiSubWindow类 多重⽂档界⾯设置堆叠 cascadeSubWindows()
brute
详细请看 本博主其他⽂章 QMidArea类和QMdiSubWindow类的⽤法
3、停靠窗⼝
QTextEdit *te=new QTextEdit(this); //定义⼀个QTextEdit对象作为主窗⼝
te->tText(tr("Main Window"));
te->tAlignment(Qt::AlignCenter);
中国合伙人 票房tCentralWidget(te); //将此编辑框设为主窗⼝的中央窗体
//停靠窗⼝1
QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this);
//可移动
dock->tFeatures(QDockWidget::DockWidgetMovable);
dock->tAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
QTextEdit *te1 =new QTextEdit();
te1->tText(tr("Window1"));
dock->tWidget(te1);
addDockWidget(Qt::RightDockWidgetArea,dock);
challot//停靠窗⼝2
dock=new QDockWidget(tr("DockWindow2"),this);
dock->tFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); //可关闭、可浮动
QTextEdit *te2 =new QTextEdit();
te2->tText(tr("Window2"));
dock->tWidget(te2);
addDockWidget(Qt::RightDockWidgetArea,dock);
//停靠窗⼝3
dock=new QDockWidget(tr("DockWindow3"),this);
dock->tFeatures(QDockWidget::AllDockWidgetFeatures); //全部特性
QTextEdit *te3 =new QTextEdit();
te3->tText(tr("Window3"));
dock->tWidget(te3);
addDockWidget(Qt::RightDockWidgetArea,dock);
electrician停靠窗⼝主要有两⼤属性:
1、tFeatures()⽅法设置停靠特性Qt::DockWidgetFeatures
QDockWidget::DockWidgetClosable // 可关闭
QDockWidget::DockWidgetMovable // 可移动
QDockWidget::DockWidgetFloatable // 可浮动
可能英文QDockWidget::AllDockWidgetFeatures // 拥有以上所有特性QDockWidget::NoDockWidgetFeatures // 不可关闭、不可移动、不可浮动
2、tAllowedAreas()⽅法设置停靠区域
anna chapmanQt::LeftDockWidgetArea // 可在左边停靠
Qt::RightDockWidgetArea // 可在右边停靠
Qt::TopDockWidgetArea // 可在上边停靠
Qt::BottomDockWidgetArea // 可在下边停靠
Qt::AllDockWidgetArea // 可在以上四个部位停靠
Qt::NoDockWidgetArea // 只可停靠在插⼊处