#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 版权协议,转载请附上原文出处链接和本声明。