QT-QMainWindow布局设置
2016-03-08 21:40
246 查看
参考文档:
http://blog.csdn.net/IAccepted/article/details/24426875
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
窗口的UI布局文件.ui编辑时:我们会看到一种现象---添加了布局layout没有占满整个界面
有两种方法可以解决这个问题:
第一种:自动创建布局---在UI编辑的对象窗口(视图->对象查看器)中
点击 根节点->”布局“->"xxx布局“,然后再调整窗体元素,这样就完成了布局,切所见即所得
第二种:手动设置布局---我们需要在代码中做这样一个操作:
在SetUi之后添加下面的方法,为ui.centralWidget设置ui中的layout
QMainWindows可能引用了:QDockWidget-停靠窗口, QMenuBar-菜单栏, QStartusBar-状态栏, QToolBar-工具栏, QMenu-菜单
点击主窗体,可以看到有MenuBar/ToolBar/StatusBar
解决方法:删除这些就可以去掉了
扩展说明:
因为有了MenuBar/ToolBar/StatusBar这些的存在,在自动生成的ui_xxx.h文件中的setupUI方法可以看到:
QMainWindows下面方法均被调用
setCentralWidget -- 设置主页面
setMenuBar - 设置菜单
addToolBar - 设置工具栏
setStatusBar - 设置状态栏
通过一层层的布局,实现了整体窗口的布局
在这个查看器中,可以方便的做一下几个事情
1. 查看布局关系
2. 找布局下的各个组件
3. 转换布局类型
水平/垂直策略:当选为fixed时,可以使用minimusSize设置构建的固定大小值
另外,可以使用Horizental Spacer和Vertical Spacer协助调整位置
宽度16777215
高度16777215
同理,如果希望再出来,那就把值再设回去即可
a. 在窗口里面放置两个 widget容器,把窗口中的元素都分别放入到这两个里面,例如:ui.topWidget, ui.bottomWidget
b. 在MainWindows的 构造函数中,ui.setupUi(this)之后,新建一个spliter,把ui.topWidget/ui.bottomWidget放入到spliter
c. setCentralWidget为spliter
这样就生成了spliter窗口,窗口可以分割拖动了
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
http://blog.csdn.net/IAccepted/article/details/24426875
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
1. 问题:UI文件添加了布局layout没有占满整个界面
在开发QT程序的过程中,当我们使用QMainWindows作为窗口主类的时候;窗口的UI布局文件.ui编辑时:我们会看到一种现象---添加了布局layout没有占满整个界面
有两种方法可以解决这个问题:
第一种:自动创建布局---在UI编辑的对象窗口(视图->对象查看器)中
点击 根节点->”布局“->"xxx布局“,然后再调整窗体元素,这样就完成了布局,切所见即所得
第二种:手动设置布局---我们需要在代码中做这样一个操作:
在SetUi之后添加下面的方法,为ui.centralWidget设置ui中的layout
ui->setupUi(this); // 设置layout布满窗口,假设layout名称是m_horizontalLayout ui.centralWidget->setLayout(ui.m_horizontalLayout);
2. 解析:QMainWindows结构
从下面的基本定义可以看到:QMainWindows可能引用了:QDockWidget-停靠窗口, QMenuBar-菜单栏, QStartusBar-状态栏, QToolBar-工具栏, QMenu-菜单
class QDockWidget; class QMainWindowPrivate; class QMenuBar; class QStatusBar; class QToolBar; class QMenu; class Q_WIDGETS_EXPORT QMainWindow : public QWidget
3. 问题:如何删除QMainWindows上的菜单、工具栏、状态栏?
在UI编辑的对象窗口(视图->对象查看器)中点击主窗体,可以看到有MenuBar/ToolBar/StatusBar
解决方法:删除这些就可以去掉了
扩展说明:
因为有了MenuBar/ToolBar/StatusBar这些的存在,在自动生成的ui_xxx.h文件中的setupUI方法可以看到:
QMainWindows下面方法均被调用
setCentralWidget -- 设置主页面
setMenuBar - 设置菜单
addToolBar - 设置工具栏
setStatusBar - 设置状态栏
MainWindow->setCentralWidget(centralWidget); menuBar = new QMenuBar(MainWindow); menuBar->setObjectName(QStringLiteral("menuBar")); menuBar->setGeometry(QRect(0, 0, 400, 23)); MainWindow->setMenuBar(menuBar); mainToolBar = new QToolBar(MainWindow); mainToolBar->setObjectName(QStringLiteral("mainToolBar")); MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); statusBar = new QStatusBar(MainWindow); statusBar->setObjectName(QStringLiteral("statusBar")); MainWindow->setStatusBar(statusBar);
4. 建议:要善用对象查看器调整截面
在UI编辑的对象窗口(视图->对象查看器)中,有着布局layout的布局关系:通过一层层的布局,实现了整体窗口的布局
在这个查看器中,可以方便的做一下几个事情
1. 查看布局关系
2. 找布局下的各个组件
3. 转换布局类型
5. SizePolicy说明
水平/垂直伸展:拉伸时的比例控制,例如填写1,则拉伸比例为 (1)/(1+...总和)水平/垂直策略:当选为fixed时,可以使用minimusSize设置构建的固定大小值
另外,可以使用Horizental Spacer和Vertical Spacer协助调整位置
6. 问题:如何去掉启用、停用最大化按钮
选择窗体:设置maximumSize的宽高度不为16777215,最大化按钮就会消失宽度16777215
高度16777215
同理,如果希望再出来,那就把值再设回去即可
7. 使用Spliter分割MainWindows窗口
方法:a. 在窗口里面放置两个 widget容器,把窗口中的元素都分别放入到这两个里面,例如:ui.topWidget, ui.bottomWidget
b. 在MainWindows的 构造函数中,ui.setupUi(this)之后,新建一个spliter,把ui.topWidget/ui.bottomWidget放入到spliter
c. setCentralWidget为spliter
这样就生成了spliter窗口,窗口可以分割拖动了
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)
相关文章推荐
- Qt:parent参数
- Qt中ioctl
- QT4.8.6静态编译
- 关于Qt调用多个.m文件形成的函数问题。
- Win7 Qt4.8.5+QtCreator2.8.0+mingw配置过程
- Qt5官方demo解析集21——Extending QML - Adding Types Example
- QT中如何给QTabWidget的整个Tab页添加border边框
- Qt自定义Combox(类似单选按钮功能)
- linux系统Qt调用opencv的编译过程(ubuntu14.04 kylin+qt5.5+opencv2.4.10)
- QT中布局器的addStretch函数使用效果1
- Qt5.3.2_CentOS6.4(x86)_代码文件编码
- qt中如何由Double类型变为QString类型以及chop()的使用
- Qt入门-表格类QTableWidget
- Qt中Q_D宏及d指针
- paho mqtt资源地址
- 字符编码转换 QT
- Qt5.0.2无法发布问题
- QT 相关
- QT小插件类之QRoundProgressBar
- Qt5.4 打开文件目录并选中文件