Qt_03

QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,继承于QWidget,包含一个菜单栏栏menu bar、多个工具栏tool bars、多个铆接部件dock widgets、一个状态栏status bar、一个中心部件central widget,是许多应用程序的基础,如文本编辑器,图片编辑器等



其中铆接部件,就是导航栏这种,可以移动又可以贴回去





菜单栏

	//菜单栏  一般只有一个
	QMenuBar *menu = menuBar();
	
    //依赖到窗口上
    setMenuBar(menu);
    
    //设置菜单
    QMenu *fileMenu = menu->addMenu("文件(F)");
    QMenu *editMenu = menu->addMenu("编辑(E)");
    
    //给文件添加菜单项
    QAction * newFile = fileMenu->addAction("新建");
    
	//newFile 和 openFile之间添加一个分割线
    fileMenu->addSeparator();

    QAction * openFile = fileMenu->addAction("打开");
  1. 菜单栏只能有一个
  2. menuBar()返回类型是QMenuBar *,所以定义一个* menu

多看文档

  1. 创建的菜单栏menu,依赖在QMainWindow上,可以setMenuBar(menu)

  2. 设置菜单,设置菜单项,菜单项之间设置分割线等等







工具栏



多看文档


    // 工具栏  可以有多个
    QToolBar * toolBar = new QToolBar(this);

    // 将工具栏依赖到窗口上
    addToolBar(Qt::LeftToolBarArea,toolBar);  // 第一个参数 默认在左边   enum枚举类型


    // 只允许将工具栏放在xx
    toolBar->setAllowedAreas(Qt::TopToolBarArea|Qt::LeftToolBarArea);

    // 设置浮动
    toolBar->setFloatable(false);

    // 设置移动  总开关
    toolBar->setMovable(false);


    // 工具栏添加小控件
    QPushButton *btn = new QPushButton("按钮",this);
    toolBar->addWidget(btn);        // addwidget 是因为 QPushButton的父类就是QWidget

    connect(btn,&QPushButton::clicked,this,&QMainWindow::close);

    // 把菜单项放进工具栏
    toolBar->addAction(newFile);

    toolBar->addSeparator();
    toolBar->addAction(openFile);

和菜单栏大同小异,就不讲了





状态栏

	// 状态栏

    QStatusBar * sta = statusBar();

    setStatusBar(sta);

    //放入标签
    QLabel * label = new QLabel("左侧信息",this);

    //将标签 放入到 状态栏中
    sta->addWidget(label);


    QLabel *la2 = new QLabel("右侧信息",this);
    sta->addPermanentWidget(la2);       // 从右往左放





铆接部件

	// 铆接部件   浮动窗口
    QDockWidget * dock = new QDockWidget("铆接部件",this);
    addDockWidget(Qt::BottomDockWidgetArea,dock);  
    // 铆接部件的位置是相对于核心部件的

    // 停靠范围
    dock->setAllowedAreas(Qt::BottomDockWidgetArea|Qt::LeftDockWidgetArea);





核心部件

核心部件可以是任意类型的需要放在窗口中的对象
这里举一个文本编辑的例子

    // 核心部件  只能一个
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);





以上的QMainWindow部件,函数都大同小异,要懂得举一反三


有两个点注意一下:

在把这些部件依赖到QMainWindow上时,好像不是用setParent(this)
都是用setMenuBar(menu)或者addToolBar(toolBar)
这是因为这几个函数都是QMainWindow的公有成员函数,QMainWindow在定义时就拥有这些个部件,只需要对这些部件进行设置一下就可以

而前面写的文章中,定义一个QPushButton对象,但QWidget是一个空窗口,在定义时没有写上QPushButton类型的成员对象,写上也不合理啊,谁规定空窗口一定要有按钮?
所以在需要把按钮依赖上QWidget时,才用setParent(this)


另外,看哪些部件是只能有一个哪些是能有多个,可以看依赖时是用set还是add






上面提到了成员对象,不知怎么的就脑子里冒出了个名词 —— 对象成员
这二者的区别是啥?

成员对象就是上面写的那样,一个类的成员变量,是由另一个类实例化出来的对象,这叫做成员对象
而对象成员,其实就是类实例化的对象,含有的成员变量和成员函数的总称,叫做对象的成员,简称对象成员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值