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

效果:

QMainWindow(二)的更多相关文章

  1. 第十二篇 -- QMainWindow与QAction(剪切-复制-粘贴)

    效果图: 按照上一节的方法,将剪切-复制-粘贴图标放置到工具栏后,为其指定槽函数.这些功能无需自己编写代码来实现,QPlainTextEdit提供了实现这些编辑功能的槽函数,如cut().copy() ...

  2. Qt 二维码

    1.生成二维码 利用第三方库qrencode ,将qrencode源码添加到自己的程序中,直接调用使用. 参考http://blog.csdn.net/zhangxufei/article/detai ...

  3. QT Creator 快速入门教程 读书笔记(二)

    一 窗口部件 基础窗口部件QWidget类是所有用户界面对象的基类,窗口和控件都是直接或间接继承自 QWidget,下面我们来看一个很简单的例子: 窗口部件(Widget)简称部件,是QT中建立界面的 ...

  4. GUI学习之二——PyQt控件初识

    一.控件概念 控件是一个程序界面上的各个独立的元素, 它具备用户点击.接收用户输入.展示不同内容.存放其他控件等功能. 二.控件分类 常用的控件按功能可以分为以下几种类 按钮 QPushButton— ...

  5. 使用 PySide2 开发 Maya 插件系列二:继承 uic 转换出来的 py 文件中的类 Ui_Form

    使用 PySide2 开发 Maya 插件系列二:继承 uic 转换出来的 py 文件中的类 Ui_Form 开发环境: Wing IDE 6.1 步骤1: 打开 Wing IDE,创建一个新的 pr ...

  6. Qt容器组件(二)之QWidgetStack、QMdiArea、QDockWidget

    QT中有九种容器组件,分别是组合框QGroupBox.滚动区QScrollArea.工具箱QToolBox.选项卡QTabWidget.控件栈QWidgetStack.框架QFrame.组件QWidg ...

  7. QT5每日一学(二)编写QT多窗口程序

    一.添加主窗口 1.首先打开Qt Creator,新建Qt Widgets Application,项目名称设置为windows,在类信息界面保持基类为QMainWindow.类名为MainWindo ...

  8. Qt 3D教程(二)初步显示3D的内容

    Qt3D教程(二)初步显示3D的内容 前一篇很easy,全然就没有牵涉到3D的内容,它仅仅是我们搭建3D应用的基本框架而已,而这一篇.我们将要利用它来初步地显示3D的内容了! 本次目的是将程序中间的内 ...

  9. c++小学期大作业攻略(二)整体思路+主界面

    写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...

随机推荐

  1. Vim使用简介

    Vim操作 Vim真的很酷:D 编辑模式 正常模式:在文件中四处移动光标进行修改 插入模式:插入文本 替换模式:替换文本 可视化(一般,行,块)模式:选中文本块 命令模式:用于执行命令 在不同的操作模 ...

  2. VS2010 sp1离线下载地址和在线下载地址

    地址是:http://www.msdn1.cn/8/42/ 下载: edk2 + 迅雷, 稳的1P

  3. 【Java】质数判断

    static boolean isPrime(int n) { if(n<=1) { return false; } if(n==2||n==3) { return true; } if(n%6 ...

  4. <数据结构>BinarySearchTree的基本操作总结

    目录 ADT 结构声明 核心操作集 各操作实现 Find(),Insert(),Delete() Traverse():前中后.层 ADT 结构声明 #include<stdio.h> # ...

  5. 自动化集成:Pipeline整合Docker容器

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成Docker用法. 一.背景描述 微服务架构 ...

  6. Spring练习,定义三个模块,使用<import>标签完成分模块配置开发,模拟实现学生借书和还书的过程,将结束输出到控制台。

    相关 知识 >>> 相关 练习 >>> 实现要求: 在图书管理系统中,学生管理模块.书籍管理模块和借还书管理模块等其他模块,相互配合协作,促使系统的运行流畅.定义三 ...

  7. html基础 表单相关属性综合实战案例 附有注释

    html结构代码: <form > <!-- form 为了让重置按钮生效--> <h1>青春不常在,抓紧谈恋爱</h1> <hr> 昵称: ...

  8. CSS基础 定位相关属性的使用方法

    1.相对定位:position:relative: 属性名:position 属性值:relative: 特点:1.相对自己的位置移动 2.配合方位名词移动,如:top.left.right,bott ...

  9. hisql 新功能 支持一套sql在不同数据库执行

    目前流行的ORM框架如果需要动态的拼接查询语句,只能用原生的sql进行拼接,无法跨不同数据库执行.hisql推出新的语法一套语句可以在不同的数据库执行 传统ORM框架最大的弊端就是完全要依赖于实体用l ...

  10. Selenium_POM架构(17)

    POM是Page Object Model的简称,它是一种设计思想,意思是,把每一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为. POM一般使用三层架构,分别为:基础封装 ...