状态栏,Dock部件

  • Post author:
  • Post category:其他


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolButton>
#include <QSpinBox>
#include <QTextEdit>
#include <QMdiSubWindow>
#include <QLabel>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //QMenu *fileMenu = ui->menuBar->addMenu(tr("文件(&F)")); //添加文件菜单
    QMenu *editMenu = ui->menuBar->addMenu(tr("编辑(&E)")); //添加编辑菜单
    QAction *action_Open = editMenu->addAction(QIcon(":/myImage/images/open.png"),tr("打开(&O)"));
    //QAction *action_New = fileMenu->addAction(QIcon(":/myImage/images/new.png"),tr("新建(&N)"));

    action_Open->setShortcut(QKeySequence("Ctrl + O")); //设置快捷键
    ui->mainToolBar->addAction(action_Open); //在工具栏中添加动作
    //action_New->setShortcut(QKeySequence("Ctrl + N"));
    //ui->mainToolBar->addAction(action_New);

    //菜单栏的设置
    //QActionGroup类,它可以包含一组动作QAction,支持这组动作中是否只能有一个动作处于选中状态,这对于互斥型动作很有用。
    QActionGroup *group = new QActionGroup(this); //建立动作组
    QAction *action_L = group->addAction(tr("左对齐(&L)")); //向动作组中添加动作
    action_L->setCheckable(true); //设置动作checkable属性为true
    QAction *action_R = group->addAction(tr("右对齐(&R)"));
    action_R->setCheckable(true);
    QAction *action_C = group->addAction(tr("居中(&C)"));
    action_C->setCheckable(true);

    action_L->setChecked(true); //最后指定action_L为选中状态
    editMenu->addSeparator(); //向菜单中添加间隔器
    editMenu->addAction(action_L); //向菜单中添加动作
    editMenu->addAction(action_R);
    editMenu->addAction(action_C);
    //这里让“左对齐”,“右对齐”和“居中”3个动作处于一个动作组中,然后设置“左对齐”动作为默认选中状态。

    //工具栏的设置
    //工具栏QToolBar类提供了一个包含了一组控件的可以移动的面板。将QAction对象添加到工具栏中,
    //它默认只是显示一个动作的图标,这个可以在QToolBar的属性栏中修改。QToolBar的属性栏中,toolButtonStyle属性
    //设置图标和相应文本的显示,及其相对位置等。movabel属性设置状态栏是否可以移动。allowedArea设置允许停靠的位置。
    //iconsize属性设置图标的大小,floatable属性设置是否可以悬浮。
    QToolButton *toolBtn = new QToolButton(this); //创建QToolButton
    toolBtn->setText(tr("颜色"));
    QMenu *colorMenu = new QMenu(this); //创建一个菜单
    colorMenu->addAction(tr("红色"));
    colorMenu->addAction(tr("绿色"));
    toolBtn->setMenu(colorMenu); //添加菜单
    toolBtn->setPopupMode(QToolButton::MenuButtonPopup); //设置的弹出方式是按钮旁边有一个向下的小箭头
    ui->mainToolBar->addWidget(toolBtn); //向工具栏添加QToolButton按钮

    QSpinBox *spinBox = new QSpinBox(this); //创建QSpinBox
    ui->mainToolBar->addWidget(spinBox); //向工具栏添加QSpinBox部件

    //状态栏
    //QStatusBar类提供了一个水平条,用来显示状态信息。QMainWindow默认提供一个状态栏。状态信息分3类:
    //临时信息:如一般的提示信息
    //正常信息:如显示页数和行号
    //永久信息:如显示版本号或者日期
    //可以使用showMessage()函数类显示一个临时信息,它会出现在状态栏的最左边。一般用addWidget()添加
    //一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。若要显示
    //永久信息,要使用addermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在
    //状态栏的最右侧,不会被临时消息所覆盖。
    //在状态栏的最右侧还有一个QSizeGrip部件,用来调整窗口的大小。可以使用setSizeGripEnable()函数来禁用它。

    //显示临时消息,显示2000毫秒
    ui->statusBar->showMessage(tr("欢迎使用多文档编辑器"),2000);
    //创建标签,设置标签样式并显示信息,然后将其以永久部件的形式添加到状态栏
    QLabel *permanent = new QLabel(this);
    permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
    permanent->setText("www.csdn.com");
    ui->statusBar->addPermanentWidget(permanent);
}

MainWindow::~MainWindow()
{
    delete ui;
}

//中心部件
void MainWindow::on_action_New_triggered()
{
    QTextEdit *edit = new QTextEdit(this); //新建文本编辑器部件
    //使用QMdiArea类的addSubWindow()函数创建子窗口,以文本编辑器为中心部件
    QMdiSubWindow *child = ui->mdiArea->addSubWindow(edit);
    child->setWindowTitle(tr("多文档编辑器子窗口"));
    child->show();
}

//dock部件
//QDockWidget类提供了这样一个部件,它可以停靠在QMainWindow中,也可以悬浮起来作为桌面顶级窗口,
//称它为Dock部件或停靠窗口。Dock部件一般用于存放一些其他部件来实现特殊功能,就像一个工具箱。
//它在主窗口中可以停靠在中心部件的四周,也可以悬浮起来,被拖到任意的地方,还可以被关闭或隐藏起来。
//一个Dock部件包含一个标题栏和一个内容区域,可以向Dock部件中放入任何部件。

void MainWindow::on_action_Show_triggered()
{
    ui->dockWidget->show();
}





版权声明:本文为wanggang_hzcw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。