Qt学习之路19--主窗口QMainWindow之工具栏QToolBar、状态栏QStatusBar

工具栏的概念和意义

  • 应用程序中集成功能实现快捷使用的一个区域
  • 工具栏并不是必须存在的组件,比如Windows下的文本编辑器就不包含工具栏
  • 工具栏中的元素可以是各种窗口组件
  • 工具栏中元素通常是以图标按钮的方式存在
    Qt学习之路19--主窗口QMainWindow之工具栏QToolBar、状态栏QStatusBar_第1张图片

如何在主窗口中创建工具栏

QToolBar* tb = addToolBar("Tool Bar");//往主窗口添加工具栏
QAction* action = new QAction("", NULL);

action->setToolTip("Open");//设置提示消息
action->setIcon(QIcon(":/Res/open.png"));//设置图标,使用的是资源文件

tb->addAction(action);

QToolBar的三个重要函数
void setFloatable(bool floatable);
设置工具栏是否可以作为一个独立的窗口进行拖动到任意位置悬浮
void setMovable(bool movable);
设置工具栏是否可以被拖动到其他工具栏区域
void setIconSize(const QSize& iconSize);
设置图标大小

工具栏使用

通过setMovable和setFloatable设置后的工具栏是可以进行拖动并摆放在任意位置的。

QToolBar可以添加任意QWidget组件

QToolBar* tb = addToolBar("Tool Bar");
QAction* action = new QAction("", NULL);

tb->setFloatable(true);//设置是否可以悬浮在主窗口
tb->setMovable(true);//设置是否可以移动
tb->setIconSize(QSize(16, 16));//设置图标尺寸

action->setToolTip("Open");//设置提示信息
action->setIcon(QIcon(":/Res/open.png"));//设置图标

tb->addAction(action);//添加菜单项到工具栏

//添加其他组件
QPushButton* b = new QPushButton("Button");
QLabel* l = new QLabel("Label");
QLineEdit* e = new QLineEdit();

tb->addWidget(b);
tb->addWidget(l);
tb->addWidget(e);

Qt学习之路19--主窗口QMainWindow之工具栏QToolBar、状态栏QStatusBar_第2张图片
按照之前的方式可以不断的添加工具栏里面的QAction
Qt学习之路19--主窗口QMainWindow之工具栏QToolBar、状态栏QStatusBar_第3张图片

状态栏的概念和意义

  • 状态栏是应用程序中输出简要信息的区域
  • 状态栏一般位于主窗口的最底部
  • QStatusBar是容器类型组件
  • 状态栏中的显示消息类型:
    • 实时消息,如:当前程序状态
    • 永久消息,如:程序版本号,机构名称等
    • 进度消息,如:进度条提示,百分比提示等
      Qt学习之路19--主窗口QMainWindow之工具栏QToolBar、状态栏QStatusBar_第4张图片
      状态栏QStatusBar是一个容器类,可以往里面添加任意的QWidget组件,如QLabel、QLineEdit、QPushButton等等。

如何使用状态栏

  • 通过函数statusBar()可以直接生成一个指向状态栏的指针。
  • 通过函数addWidget()和函数addPermanentWidget()可以往状态栏中添加组件,但是添加的组件应该符合Qt状态栏内置的设计原则。
  • Qt状态栏内置的设计原则:
    • 左边的区域用于输出实时消息
    • 右边的区域用于设置永久消息
    • addWidget在状态栏左半部分添加组件
    • addPermanentWidget在状态栏右半部分添加组件
QStatusBar* sb = statusBar();//获取状态栏
QLabel* l = new QLabel("Label");
QLineEdit* e = new QLineEdit();
QPushButton* b = new QPushButton("Button");

sb->addWidget(l);//组件放状态栏左边部分
sb->addPermanentWidget(e);//放状态栏右边部分
sb->addPermanentWidget(b);

这里写图片描述

小结

  • 工具栏是集成各种功能的快捷区域
  • 通过QToolBar建立工具栏
  • QToolBar通常以图标按钮的形式存在,但也能添加任意的QWidget组件
  • 状态栏用于程序输出简要信息的区域
  • QStatusBar可以添加任意的QWidget组件,但是要符合Qt内置的设计原则

你可能感兴趣的:(Qt)