Qt布局管理
2016-06-28 18:12
453 查看
Qt布局管理
By Xchen 20160628分割窗口
类QSplitter先看一个实例
example01:
#include "mainwindow.h" #include <QApplication> #include <QSplitter> #include <QTextEdit> int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("ZYSong18090",12); a.setFont(font); QSplitter *splitterMain=new QSplitter(Qt::Horizontal,0); QTextEdit *textLeft=new QTextEdit(QObject::tr("Left Widget"),splitterMain); textLeft->setAlignment(Qt::AlignCenter); QSplitter *splitterRight=new QSplitter(Qt::Vertical,splitterMain); splitterRight->setOpaqueResize(false);//设置窗口分割线是否实时显示 QTextEdit *textUp=new QTextEdit(QObject::tr("Top Widget"),splitterRight); textUp->setAlignment(Qt::AlignCenter); QTextEdit *textBottom=new QTextEdit(QObject::tr("Bottom Widget"),splitterRight); textBottom->setAlignment(Qt::AlignCenter); splitterMain->setStretchFactor(1,1);//设置右窗口为可伸缩控件,即在整个对话框大小改变时右窗口大小随之改变 splitterMain->setWindowTitle(QObject::tr("Splitter")); splitterMain->show(); //MainWindow w; //w.show(); return a.exec(); }
对于上面的例子,一定要在main()函数中建立QSplitter对象,这样可以直接将窗口分割,所以QSplitter对象相当于一个控件并且可以直接显示。
停靠窗口
类QDockWidgetexample02:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setWindowTitle(tr("DockWindows")); QTextEdit *text=new QTextEdit(this); text->setText(tr("Main Window")); text->setAlignment(Qt::AlignCenter); setCentralWidget(text); QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this); dock->setFeatures(QDockWidget::DockWidgetMovable); dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); QTextEdit *text1=new QTextEdit(); text1->setText(tr("this is dockwindow1")); dock->setWidget(text1); addDockWidget(Qt::RightDockWidgetArea,dock); dock=new QDockWidget(tr("DockWindow2"),this); dock->setFeatures(QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetFloatable); dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); QTextEdit *text2=new QTextEdit(); text2->setText(tr("this is dockwindow2")); dock->setWidget(text2); addDockWidget(Qt::RightDockWidgetArea,dock); dock=new QDockWidget(tr("DockWindow3"),this); dock->setFeatures(QDockWidget::AllDockWidgetFeatures); dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea); QTextEdit *text3=new QTextEdit(); text3->setText(tr("this is dockwindow1")); dock->setWidget(text3); addDockWidget(Qt::RightDockWidgetArea,dock); }
在这个例子中可以看出停靠窗口QDockWidget的使用步骤为:
1、创建QDockWidget对象的停靠窗口
2、设置窗口属性
QDockWidget *dock=new QDockWidget(tr("DockWindow1"),this); dock->setFeatures(QDockWidget::DockWidgetMovable); dock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);
3、新建控件
QTextEdit *text1=new QTextEdit(); text1->setText(tr("this is dockwindow1"));
4、将控件插入停靠窗体
dock->setWidget(text1);
5、将停靠窗口加入MainWindow
addDockWidget(Qt::RightDockWidgetArea,dock);
堆栈窗口
类QStackedWidgetexample03:
Dialog::Dialog(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("StackedWidget")); list=new QListWidget(this); list->insertItem(0,tr("window1")); list->insertItem(1,tr("window2")); list->insertItem(2,tr("window3")); label1=new QLabel(tr("this is window1")); label2=new QLabel(tr("this is window2")); label3=new QLabel(tr("this is window3")); stack=new QStackedWidget(this); stack->addWidget(label1); stack->addWidget(label2); stack->addWidget(label3); QHBoxLayout *mainLayout=new QHBoxLayout(this); mainLayout->setMargin(5); mainLayout->setSpacing(5); mainLayout->addWidget(list); mainLayout->addWidget(stack,0,Qt::AlignHCenter); mainLayout->setStretchFactor(list,1); mainLayout->setStretchFac a698 tor(stack,3); connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int))); }
堆栈窗口的使用多与QListWidget和QComboBox配合使用。例子中是让堆栈窗口与QListWidget配合使用。
基本布局
类QLayout它们的继承关系:
可以在布局中常用的方法为addWidget()和addLayout()就可以将指定控件加入到布局中。
相关文章推荐
- Android布局的小窍门?
- Web布局连载——两栏固定布局(五)
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- 样式表CSS布局经验
- 在winform下实现左右布局多窗口界面的方法之续篇
- css网页布局中注意的几个问题小结
- DL.DT.DD实现左右的布局简单例子第1/2页
- 使用CSS框架布局的缺点和优点小结
- div+CSS网页布局的意义与副作用原因小结第1/2页
- 在winform下实现左右布局多窗口界面的方法
- Android布局技巧之创建可重用的UI组件
- Android编程之代码创建布局实例分析
- CSS顶级技巧大放送,div+css布局必知
- 用div实现像table一样的布局方法
- Bootstrap三种表单布局的使用方法
- 精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
- 第七篇Bootstrap表单布局实例代码详解(三种表单布局)
- jQuery EasyUi实战教程之布局篇