qt5---QMainWindow

QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)【就是浮动窗口】、一个状态栏(status bar)及一个中心部件(central widget)

 

#include "win.h"
#include <QMenuBar>
#include <QToolBar>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>

Win::Win(QWidget *parent)
    : QMainWindow(parent)
{
    this->resize(500,400);
    //******************菜单栏操作**************************
    QMenuBar* bar=menuBar(); //返回菜单栏指针
    this->setMenuBar(bar);//给窗口设置菜单栏--把菜单栏放入窗口
    //需要  #include <QMenuBar>
    QMenu* fileMenu=bar->addMenu("文件");//给菜单栏添加菜单
    //返回菜单的指针
    QMenu* editMenu=bar->addMenu("编辑");
    QAction* newAction=fileMenu->addAction("新建"); //给菜单添加一个菜单项目--添加一个行为
    //返回行为指针
    fileMenu->addSeparator();  //给菜单添加分割线
    QAction* openAction=fileMenu->addAction("打开");
    newAction->setIcon(QIcon("D:\\ss\\大象.png"));  //给行为增加图标--文件中
    openAction->setIcon(QIcon(":/tupin/img/对勾.png"));//给行为增加图标--资源文件中
    //使用资源文件格式:":+前缀名+文件名"


    //******************工具栏操作*************************
    QToolBar* toolbar=new QToolBar(this);  //创建一个工具栏
    //需要  #include <QToolBar>
    addToolBar(Qt::LeftToolBarArea,toolbar);//给窗口添加工具栏--把工具栏放到窗口
    //主窗口的工具栏上可以有多个工具条
    //工具条是一个可移动的窗口
    //参数2  要添加的工具栏
    //参数1[可选] 初始停靠区域,包括:
    //Qt::LeftToolBarArea 停靠在左侧        Qt::RightToolBarArea 停靠在右侧
    //Qt::TopToolBarArea 停靠在顶部--默认         Qt::BottomToolBarArea    停靠在底部
    //Qt::AllToolBarAreas   以上四个位置都可停靠
    toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//只能左右停靠
    toolbar->setFloatable(false);//能否浮动
    toolbar->setMovable(false);//能否移动--能否拖拽
    toolbar->addAction(newAction); //给工具栏添加行为
    //Qt 并没有专门的菜单项类,只是使用一个QAction类,抽象出公共的动作。当我们把QAction对象添加到菜单,就显示成一个菜单项,添加到工具栏,就显示成一个工具按钮。用户可以通过点击菜单项、点击工具栏按钮、点击快捷键来激活这个动作
    toolbar->addSeparator();//给工具栏添加分割线
    toolbar->addAction(openAction);

    //******************状态栏操作*******************
    QStatusBar* statusbar=statusBar(); //创建状态栏
    //返回状态栏指针
    setStatusBar(statusbar);//给窗口添加状态栏--把状态栏放到窗口
    //状态栏也只能最多有一个
    QLabel* label=new QLabel("提示信息",this);
    statusbar->addWidget(label,0);//给状态栏左侧添加控件--左侧
    //需要  #include <QStatusBar>
    //方法二 QLabel* label=new QLabel("提示信息",statusbar)---父控件是状态栏
    QLabel* label1=new QLabel("提示信息1",this);
    statusbar->addPermanentWidget(label1);//给状态栏右侧添加控件

    //*****************中心部件*******************
    QTextEdit* edit=new QTextEdit;
    setCentralWidget(edit); //给窗口添加中心控件

    //*****************浮动窗口和停靠窗口******************
    QDockWidget* dock=new QDockWidget;//创建锚接窗口--浮动窗口--停靠窗口
    //需要 #include <QDockWidget>
    addDockWidget(Qt::BottomDockWidgetArea,dock); //把浮动窗口添加到窗口中
    //参数1 起始停靠位置
    //Qt::BottomDockWidgetArea   中心部件底部
    //Qt::LeftDockWidgetArea
    //Qt::RightDockWidgetArea
    //Qt::TopDockWidgetArea
    //Qt::AllDockWidgetAreas
    //Qt::NoDockWidgetArea
    dock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);//只能上下停靠



}

Win::~Win()
{

}

 

 

connect(newAction,&QAction::triggered,this,[=](){qDebug()<<"点击新建行为了";});//点击行为,运行槽函数

 

 

posted @ 2019-09-03 15:26  天子骄龙  阅读(502)  评论(0编辑  收藏  举报