QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)【就是浮动窗口】、一个状态栏(status bar)及一个中心部件(central widget)
#include "win.h" #include#include #include #include #include #include Win::Win(QWidget *parent) : QMainWindow(parent) { this->resize(500,400); //******************菜单栏操作************************** QMenuBar* bar=menuBar(); //返回菜单栏指针 this->setMenuBar(bar);//给窗口设置菜单栏--把菜单栏放入窗口 //需要 #include 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 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 //方法二 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 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()<<"点击新建行为了";});//点击行为,运行槽函数