#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();
}