菜单栏(只能有一个)

  • 需要包含头文件QMenuBar
  • 菜单栏创建——QMenuBar* bar=menuBar();
  • 将菜单栏放入窗口——setMenuBar(bar);

菜单

  • 菜单需要在菜单栏的基础上操作
  • 创建菜单——QMenu* filemenu=bar->addMenu(“文件”);
    • 单调用bar->addMenu(“文件”);就可以在菜单栏里面添加菜单。
    • QMenu* filemenu设置接收返回值方便后续操作

菜单项

  • 菜单项是在菜单的基础上操作的
  • 创建菜单项—— QAction* newAction=filemenu->addAction(“新建”);
  • 添加分割线——filemenu->addSeparator();

工具栏(可以有多个)

  • 需要包含头文件QToolBar
  • 创建工具栏——QToolBar* toolBar=new QToolBar(this);
  • 将工具栏添加到窗口——addToolBar(Qt::LeftToolBarArea,toolBar);
    • 第一个参数代表工具栏可以放置的位置
    • Qt::开头的是QT里面的枚举类型
  • 设置只运行左右停靠——toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
    • 两个枚举类型通过|符号来连接,表示允许左侧或右侧停靠
  • 设置浮动——toolBar->setFloatable(false);
  • 设置移动(总开关)——toolBar->setMovable(false);
    • 这里设置为false,前面设置的浮动,左右停靠全部失效,不可以移动了
  • 设置工具栏中的内容——toolBar->addAction(newAction);
  • 添加分割线——toolBar->addSeparator();
  • 工具栏中添加控件(如按钮控件)——toolBar->addWidget(btn);
    • btn是一个按钮控件 QPushButton* btn=new QPushButton(“aaa”,this);

状态栏(最多有一个)

  • 需要包含头文件QStatusBar
  • 创建状态栏——QStatusBar* stBar=new QStatusBar();
  • 设置到窗口——setStatusBar(stBar);

标签控件

  • 需要包含头文件QLabel
  • 创建标签控件QLabel* label=new QLabel(“提示信息”,this);
  • 把标签控件放入状态栏——stBar->addWidget(label);
  • 放到状态栏右侧——stBar->addPermanentWidget(label2);

铆接部件——浮动窗口(可以有多个)

  • 创建铆接部件——QDockWidget* dockWidget=new QDockWidget(“浮动”,this);
  • 添加到当前窗口——addDockWidget(Qt::BottomDockWidgetArea,dockWidget);
    • 同时设置了停靠位置
  • 设置停靠区域(上下停靠)——dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

中心区域(只能有一个)

  • 创建中心文本编辑部件——QTextEdit* edit=new QTextEdit(this);
  • 将文本编辑部件设置为中心区域——setCentralWidget(edit);

问题总结

  • 为什么创建各个栏的时候有的部件需要指定父容器this,有的不需要?
    • 如果只能有一个的栏部件,可以在创建时不用指定this,在通过set添加到当前窗口的时候会自动绑定,而允许有多个的部件在创建时需要绑定this(当前窗口)为父容器。
  • 设置到当前窗口有的用set有的用add?
    • 只能有一个的部件,添加到当前窗口用set,能有多个的部件,添加到当前窗口用add。

结果展示

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐