• QMainWindow(二)


    mainwindow.h:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include <QMainWindow>
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    public slots:
        void foo();
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    private:
        void QMenBar_init();
        void ToolBar_init();
        void DockWidget_init();//停靠窗口
        QAction *_open;
        QAction *_save;
        QAction *_exit;
    
        };
    
    #endif // MAINWINDOW_H

    mainwindow.cpp:

    #include "mainwindow.h"
    #include<QMenuBar>
    #include<QMenu>
    #include<QDebug>
    #include<QToolBar>
    #include<QStatusBar>
    #include<QTextEdit>//多行文本
    #include<QDockWidget>
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        QTextEdit *qtext=new QTextEdit(this);
     this->resize(600,480);
     QMenBar_init();
     ToolBar_init();
    DockWidget_init();
     //this->statusBar();//状态栏,只能一个
      this->statusBar()->showMessage("就绪");
      //this->statusBar()->showMessage("就绪",5);//5秒后消失
     //this->statusBar()和this->menuBar()只需要调用就可以了,没必要用直至保存。
    this->setCentralWidget(qtext);//设置中央窗口
    
    }
    
     void MainWindow::DockWidget_init()
     {
         QTextEdit *qtext=new QTextEdit(this);
         QDockWidget *qd=new QDockWidget(this);
         this->addDockWidget(Qt::LeftDockWidgetArea,qd); //添加停靠窗口
         qd->setWidget(qtext);//窗口里面的类型,不固定
     }
    
    void MainWindow::ToolBar_init()
    {
    QToolBar *  tb=this->addToolBar("a");//menuBar()只能添加一个,但是toolbar可以添加多个
    //tb->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/4.png"),"打开");
    //tb->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/2.png"),"保存");
    //tb->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/3.png"),"取消",this,SLOT(close()));
    //共用堆区,节省内存
    tb->addAction(_open);
    tb->addAction(_save);
    tb->addAction(_exit);
    }
    
    
    
    void MainWindow::QMenBar_init()
    {
    QMenuBar * qm =this->menuBar();
    QMenu * wen_jian  = new QMenu("文件(&F)",qm); //快捷方式"Alt+F"
    QMenu*bian_ji   = new QMenu("编辑(&E)",qm);
    QMenu * gou_jian= new QMenu("构建(&B)",qm);
    QMenu* tiao_shi = new QMenu("调试(&D)",qm);
    _open= wen_jian->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/4.png"),"打开");
    _save=wen_jian->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/2.png"),"保存");
    _exit=wen_jian->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/3.png"),"取消",this,SLOT(close()));
    
    
    wen_jian->addAction("新建文件或项目(N...)",this,SLOT(foo()),QKeySequence("Ctrl+N"));
    wen_jian->addSeparator(); //添加分割线
    QMenu* zui_file=wen_jian->addMenu("最近访问的文件(F)");
    zui_file->addAction(" ");
    zui_file->addSeparator();
    zui_file->addAction("清除菜单");
    
    bian_ji->addAction(QIcon("C:/Users/admin/Desktop/QT_Project/untitled/1.png"),"Undo");
    tiao_shi->addAction("default")->setCheckable(true);
    
    
    qm->addMenu(wen_jian);
    qm->addMenu(bian_ji);
    qm->addMenu(gou_jian);
    qm->addMenu(tiao_shi);
    }
    void MainWindow::foo()
    {
        qDebug()<<"打开成功"<<endl;
    }
    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();
    }

    效果:

  • 相关阅读:
    Android 如何自定义EditText 下划线?
    一步一步理解 Java 企业级应用的可扩展性
    客户案例—北京优络时代科技有限公司
    11个显著提升 ASP.NET 应用程序性能的技巧——第1部分
    如何用 React Native 创建一个iOS APP?(二)
    如何与 DevOps 为伍?
    通过 DevOps 整合开发和应用安全管道
    性能为王:选择模拟监控的10大理由!
    模拟监控和真实用户体验监测,选哪个?
    PHP 之 Laravel 框架安装及相关开源软件
  • 原文地址:https://www.cnblogs.com/SunShine-gzw/p/13264302.html
Copyright © 2020-2023  润新知