mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTextEdit> //文本编辑框
#include <QLabel> //标签
#include <QProgressBar> //进度条
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QTextEdit *te;
QLabel *lb;
QProgressBar *prgBar;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include <QMenuBar> //菜单栏
#include <QMenu> //菜单
#include <QAction> //菜单项
#include <QToolBar> //工具栏
#include <QStatusBar> //状态栏
#include <QDockWidget> //浮动窗口
#include <QFileDialog> //文件对话框
#include <QFontDialog> //字体对话框
#include <QColorDialog> //颜色对话框
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle("主窗口");
setWindowIcon(QIcon(":/mw_images/10.png"));
setFixedSize(800,600);
//一个主窗口只有一个菜单栏
//一个菜单栏可以有多个菜单,如下为添加3个菜单
QMenu *fileMenu = menuBar()->addMenu("文件");
QMenu *editMenu = menuBar()->addMenu("编辑");
QMenu *setMenu = menuBar()->addMenu("设置");
//添加菜单项
//文件菜单添加菜单项
QAction *openAct = fileMenu->addAction(QIcon(":/mw_images/open.png"),"打开文件");
QAction *closeAct = fileMenu->addAction(QIcon(":/mw_images/close.png"),"关闭文件");
//编辑菜单添加菜单项
QAction *copyAct = editMenu->addAction(QIcon(":/mw_images/copy.png"),"拷贝");
QAction *pasteAct = editMenu->addAction(QIcon(":/mw_images/paste.png"),"粘贴");
//设置菜单添加菜单项
QAction *fontAct = setMenu->addAction(QIcon(":/mw_images/font.png"),"设置字体");
QAction *colorAct = setMenu->addAction(QIcon(":/mw_images/color.png"),"设置颜色");
//一个主窗口可以有多个工具栏
//添加3个工具栏
QToolBar *fileTool = addToolBar("文件");
fileTool->addAction(openAct);
fileTool->addAction(closeAct);
//设置文件工具栏可以停靠的区域
fileTool->setAllowedAreas(Qt::TopToolBarArea | Qt::BottomToolBarArea);
//设置是否允许浮动
fileTool->setFloatable(false);
//设置工具栏是否可以移动
fileTool->setMovable(false);
QToolBar *editTool = addToolBar("编辑");
editTool->addAction(copyAct);
editTool->addAction(pasteAct);
QToolBar *setTool = addToolBar("设置");
setTool->addAction(fontAct);
setTool->addAction(colorAct);
//一个主窗口可以有多个浮动窗口
QDockWidget *dw = new QDockWidget("浮动窗口");
// dw->setFloating();
this->addDockWidget(Qt::LeftDockWidgetArea,dw);
dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QDockWidget *dw2 = new QDockWidget("浮动窗口");
this->addDockWidget(Qt::RightDockWidgetArea,dw2);
dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
//一个主窗口只能有一个中心部件
te = new QTextEdit(this);
te->setFixedSize(640,480);
this->setCentralWidget(te);
//一个主窗口只有一个状态栏
QStatusBar *staBar = this->statusBar();
lb = new QLabel("xxx file is editing...",this);
prgBar = new QProgressBar(this);
prgBar->setValue(78);
staBar->addWidget(lb);
staBar->addWidget(prgBar);
//完成打开文件功能
//triggered为触发信号
connect(openAct,&QAction::triggered,[=](){
QStringList fileLists = QFileDialog::getOpenFileNames(this,"打开文件",".","文本文件(*.h *.cpp *.txt)");
for(int i = 0;i < fileLists.size();i++)
{
te->append(fileLists.at(i));
}
});
//完成关闭文件功能
connect(closeAct,&QAction::triggered,[=](){
te->clear();
});
//完成拷贝功能
connect(copyAct,&QAction::triggered,[=](){
te->copy();
});
//完成粘贴功能
connect(pasteAct,&QAction::triggered,[=](){
te->paste();
});
//完成设置字体
connect(fontAct,&QAction::triggered,[=](){
bool isOK;
QFont font = QFontDialog::getFont(&isOK);
te->setFont(font);
});
//完成设置颜色
connect(colorAct,&QAction::triggered,[=](){
QColor color = QColorDialog::getColor();
te->setTextColor(color);
});
}
MainWindow::~MainWindow()
{
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
结果