QT:MainWIndow的使用

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include    //文本编辑框
#include   //标签
#include  //进度条

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   //菜单栏
#include      //菜单
#include    //菜单项
#include   //工具栏
#include   //状态栏
#include   //浮动窗口
#include   //文件对话框
#include   //字体对话框
#include   //颜色对话框

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 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

结果

QT:MainWIndow的使用_第1张图片

QT:MainWIndow的使用_第2张图片

QT:MainWIndow的使用_第3张图片

QT:MainWIndow的使用_第4张图片

QT:MainWIndow的使用_第5张图片

QT:MainWIndow的使用_第6张图片

QT:MainWIndow的使用_第7张图片

你可能感兴趣的:(qt)