Qt MainWindow
了解MainWindow需要先了解到它的基本布局,其布局包括菜单栏,工具栏,浮动窗口,铆接部位,核心部位,状态栏
关于各个布局的声明.
系统mac[^2] 对于菜单栏如果需要显示 要加上bar->setNativeMenuBar(false)
#include "mymainwindow.h"
#include<QMenuBar>
#include<QToolBar>
#include<QPushButton>
#include<QStatusBar>
#include<QLabel>
#include<QDockWidget>
#include<QTextEdit>
myMainWindow::myMainWindow(QWidget *parent)
: QMainWindow(parent)
{
resize(600,400);
setWindowTitle("mainwindow");
//菜单栏建立 只能有一个
QMenuBar *bar = new QMenuBar(this); //绑定方法一
//Qmenubar *bar = menuBar()
//setMenuBar(bar); 绑定方法二 建议方法一
bar->setNativeMenuBar(false); //mac 系统需要显示菜单栏加上的话
//bar->setSh
//创建菜单 有返回值 类型为 QMenu 可以保存下次直接使用
QMenu *fileMenu =bar->addMenu("文件");
QMenu *editMenu =bar->addMenu("编辑");
//创建菜单项目
QAction *newAction = fileMenu->addAction("新建");
//添加分割线 有返回值的
fileMenu->addSeparator();
QAction *openAction = fileMenu->addAction("打开");
//工具栏可以写多个
QToolBar *toolbar = new QToolBar(this);
addToolBar(Qt::LeftToolBarArea,toolbar); //把toolBar加到窗口中 top,left,right,bottomToolbarArea 默认在顶端
//只允许在某个位置停靠 需要在add上先确定位置
toolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//设置浮动
toolbar->setFloatable(false);
//设置能否移动
toolbar->setMovable(true);
//在工具栏中设置内容
toolbar->addAction(newAction);
toolbar->addSeparator();
toolbar->addAction("打开");
//在工具栏中添加控件
QPushButton * btn = new QPushButton("aa",this);
toolbar->addWidget(btn);
//状态栏 只能一个
//QStatusBar *stubar = new QStatusBar(this); 这种乱布局
QStatusBar *stubar = statusBar();
setStatusBar(stubar);
QLabel *label = new QLabel("hint",this);
QLabel *label2 = new QLabel("右侧",this);
stubar->addWidget(label);
stubar->addPermanentWidget(label2); //放在右侧
//浮动窗口 可以有多个 铆接部件
QDockWidget *dock = new QDockWidget("浮动",this);
addDockWidget(Qt::BottomDockWidgetArea,dock);
dock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);
//设置中心部件
QTextEdit *edit = new QTextEdit(this);
setCentralWidget(edit);
/*set add 区别 只有一个的(菜单,状态栏,中心部件 位置不可更改
* add(浮动窗口,工具栏
* 可以有多个 位置可改变
*/
/* \\ = /
}
myMainWindow::~myMainWindow()
{
}
一些总结
1对于声明布局加到MainWindow无非就两类
addQ*(),如工具栏
addToolBar(Qt::LeftToolBarArea,toolbar);
setQ*(Q*); 如状态栏,菜单.
setStatusBar(stubar);
add是对于那些可以多个存在的控件,而set是只允许存在一个的布局
2,仔细看上面代码基本使用时可以完成了