QT:MainWIndow的使用

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

结果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值