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. JAVA获取当前请求的URL地址,包含请求链接中的参数

    /** * 获得当前访问的URL路径 * @param request * @return */ public static String getLocation(HttpServletRequest ...

  2. 【LeetCode】1410. 实体解析器 HTML Entity Parser HTML

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 替换 日期 题目地址:https://leetcode ...

  3. 【LeetCode】面试题 17.16. 按摩师 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetco ...

  4. Chapter 8 Selection Bias

    目录 8.1 The structure of selection bias 8.2 Examples of selection bias 8.3 Selection bias and confoun ...

  5. ARTS Week 19

    Algorithm 本周的 LeetCode 题目为 5. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串.例如输入:s = "babad",输出:"bab ...

  6. 市场上十块钱买一个随身WiFi使用技术手段,插卡流量不限速不限量?

    全部章节 >>>> 文章目录 一.前言 二.进入安卓界面 1.进入网页控制台 2.先开启adb 3.CMD连接设备 4.对界面进行控制 三.刷入clnc脚本实现免流 1.ADB ...

  7. Java二、八、十、十六进制介绍

    1.说明 在Java中整数有四种表示方式, 分别为十进制,二进制,八进制,十六进制, 其中十进制就是平常最熟悉,使用最多的进制: 二进制是在计算机中使用最多的进制, 八进制和十六进制都是基于二进制的, ...

  8. linux 开启和关闭防火墙

    Ubuntu #查看防火墙状态 sudo ufw status #开启防火墙 sudo ufw enable #关闭防火墙 sudo ufw disable CentOs #查看防火墙状态 syste ...

  9. 微擎框架中 uid、acid、uniacid 之间的关系

    首先,在创建应用的时候,会在表 uni_account 中插入一条应用数据,其中 default_acid = 0 ,返回值为该表的主键,作为 $uniacid . 然后,会在表 account 中插 ...

  10. 细谈 == 和 equals 的具体区别 【包括equals源码分析】

    1.前言 昨天舍友去面试,被面试官的问题难住了:俩个学生类除了学生姓名不同用.equal来比较. 我是一脸懵逼的 ,问题说的很模糊 , 理解字面意思为 :一个 实体类名叫Student ,内部属性有学 ...