Qt自学 MainWindow

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,仔细看上面代码基本使用时可以完成了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值