QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)【就是浮动窗口】、一个状态栏(status bar)及一个中心部件(central widget)

#include "win.h"
#include <QMenuBar>
#include <QToolBar>
#include <QLabel>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit> Win::Win(QWidget *parent)
: QMainWindow(parent)
{
this->resize(,);
//******************菜单栏操作**************************
QMenuBar* bar=menuBar(); //返回菜单栏指针
this->setMenuBar(bar);//给窗口设置菜单栏--把菜单栏放入窗口
//需要 #include <QMenuBar>
QMenu* fileMenu=bar->addMenu("文件");//给菜单栏添加菜单
//返回菜单的指针
QMenu* editMenu=bar->addMenu("编辑");
QAction* newAction=fileMenu->addAction("新建"); //给菜单添加一个菜单项目--添加一个行为
//返回行为指针
fileMenu->addSeparator(); //给菜单添加分割线
QAction* openAction=fileMenu->addAction("打开");
newAction->setIcon(QIcon("D:\\ss\\大象.png")); //给行为增加图标--文件中
openAction->setIcon(QIcon(":/tupin/img/对勾.png"));//给行为增加图标--资源文件中
//使用资源文件格式:":+前缀名+文件名" //******************工具栏操作*************************
QToolBar* toolbar=new QToolBar(this); //创建一个工具栏
//需要 #include <QToolBar>
addToolBar(Qt::LeftToolBarArea,toolbar);//给窗口添加工具栏--把工具栏放到窗口
//主窗口的工具栏上可以有多个工具条
//工具条是一个可移动的窗口
//参数2 要添加的工具栏
//参数1[可选] 初始停靠区域,包括:
//Qt::LeftToolBarArea 停靠在左侧 Qt::RightToolBarArea 停靠在右侧
//Qt::TopToolBarArea 停靠在顶部--默认 Qt::BottomToolBarArea 停靠在底部
//Qt::AllToolBarAreas 以上四个位置都可停靠
toolbar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//只能左右停靠
toolbar->setFloatable(false);//能否浮动
toolbar->setMovable(false);//能否移动--能否拖拽
toolbar->addAction(newAction); //给工具栏添加行为
//Qt 并没有专门的菜单项类,只是使用一个QAction类,抽象出公共的动作。当我们把QAction对象添加到菜单,就显示成一个菜单项,添加到工具栏,就显示成一个工具按钮。用户可以通过点击菜单项、点击工具栏按钮、点击快捷键来激活这个动作
toolbar->addSeparator();//给工具栏添加分割线
toolbar->addAction(openAction); //******************状态栏操作*******************
QStatusBar* statusbar=statusBar(); //创建状态栏
//返回状态栏指针
setStatusBar(statusbar);//给窗口添加状态栏--把状态栏放到窗口
//状态栏也只能最多有一个
QLabel* label=new QLabel("提示信息",this);
statusbar->addWidget(label,);//给状态栏左侧添加控件--左侧
//需要 #include <QStatusBar>
//方法二 QLabel* label=new QLabel("提示信息",statusbar)---父控件是状态栏
QLabel* label1=new QLabel("提示信息1",this);
statusbar->addPermanentWidget(label1);//给状态栏右侧添加控件 //*****************中心部件*******************
QTextEdit* edit=new QTextEdit;
setCentralWidget(edit); //给窗口添加中心控件 //*****************浮动窗口和停靠窗口******************
QDockWidget* dock=new QDockWidget;//创建锚接窗口--浮动窗口--停靠窗口
//需要 #include <QDockWidget>
addDockWidget(Qt::BottomDockWidgetArea,dock); //把浮动窗口添加到窗口中
//参数1 起始停靠位置
//Qt::BottomDockWidgetArea 中心部件底部
//Qt::LeftDockWidgetArea
//Qt::RightDockWidgetArea
//Qt::TopDockWidgetArea
//Qt::AllDockWidgetAreas
//Qt::NoDockWidgetArea
dock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea);//只能上下停靠 } Win::~Win()
{ }
connect(newAction,&QAction::triggered,this,[=](){qDebug()<<"点击新建行为了";});//点击行为,运行槽函数

qt5---QMainWindow的更多相关文章

  1. QMainWindow

    QMainWindow继承自QWidget,是一个顶层窗口,它可以包含其他的界面元素:菜单栏.工具栏.状态栏.子窗口等. QMainWindow不能设置布局(setLayout()方法),因为它有自己 ...

  2. Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表

    Qt5.5.0使用mysql编写小软件源码讲解---顾客信息登记表 一个个人觉得比较简单小巧的软件. 下面就如何编写如何发布打包来介绍一下吧! 先下载mysql的库文件链接:http://files. ...

  3. 基于Qt5.5.0的sql数据库、SDK_tts文本语音朗读的CET四六级单词背诵系统软件的编写V1.0

    作者:小波 QQ:463431476 请关注我的博客园:http://www.cnblogs.com/xiaobo-Linux/ 我的第二款软件:CET四六级单词背诵软件.基于QT5.5.0.sql数 ...

  4. 基于Qt5.5.0的sql,C++备忘录软件的编写

    我的第一个软件. 基于Qt5.5.0的 sql ,C++备忘录软件version1.0的编写 我用的Qt版本是5.5.0免配置编译器的版本,这里附上我使用的软件下载地址:http://download ...

  5. QT5 动态链接库的创建和使用

    记录一下QT5 动态链接库的创建和使用 在文章的最后有完成的代码供下载 1.创建动态链接库 先新建一个库项目 选择chose进入下一下页面,类型选择共享库,输入一个名称:我输入的是sld 再点击下一步 ...

  6. Qt5 任务栏托盘功能实现

    23333 有一阵子没写博客了,研究了挺长时间qt,学到任务栏托盘时简直无语,网上找得到的代码大多是废码,Qt5不支持或者本身就有毛病不能实现却被n多人转来转去的,甚是无语. 简单托盘功能以下在Qt5 ...

  7. Qt4过渡至Qt5

    技术在不断进步,新知识也理应不断学习!Qt5的发布带给我无尽的好奇心,然而,受项目影响,一直使用VS2008 + Qt4.8也未曾及时更新.这几天,果断装上VS2010 + Qt5.1,开始研究.Qt ...

  8. Qt4升级到Qt5

    QtWidgets作为一个独立的模块 例如编译时错误 error: QMainWindow: No such file or directory error: QToolButton: No such ...

  9. qt5.5实现 记事本程序

    最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...

  10. QT5.3无法自动调用incomingConnection函数的问题(4.7没有这个问题)

    最近将qt4.7的一个工程移到5.3,遇到了几个麻烦事,主要是这个incomingConnection监听后无法自动调用的问题,在4.7上是完全没有问题的,到了5.3就不行,网上也查了下,网友们都是放 ...

随机推荐

  1. 菜鸟系列Fabric——Fabric 网络架构介绍(4)

    Fabric 网络架构介绍 1. 网络架构介绍 如图所示,fabric网络架构主要包含客户端节点.CA节点.Peer节点.Orderer节点这几个部分.并且fabric架构是安装组织来进行划分当,每个 ...

  2. Macaca环境搭建(三)----uirecorder Android录制

    一.安装Macaca-Android 命令窗口输入:npm i macaca-android -g 二.安装android-SDK 1.下载并安装ADT-bundle,官网下载地址我就不提供了,因为下 ...

  3. 【Java 基础】Java 基础索引

    Java 基础 注解 [注解]深入理解Java注解类型(@Annotation) [注解]Java注解(1)-基础 [注解]Java注解(2)-运行时框架 [注解]Java注解(3)-源码级框架

  4. 【Python】【demo实验1】【Python运行时强制刷新缓冲区,输出信息】(Python3 应不存在类似情况)

    [原文] 需求:打印一颗 ”*” 休息1s 代码如下: #!/usr/bin/python #coding=utf-8 ''' 暂停1s输出 ''' import time def printStar ...

  5. 小菜鸟之Oracle数据库之事务

    Oracle数据库之事务 1. 什么是事务 在数据库中事务是工作的逻辑单元,一个事务是由一个或多个完成一组的相关行为的SQL语句组成,通过事务机制确保这一组SQL语句所作的操作要么都成功执行,完成整个 ...

  6. 大数据之Hadoop完全分布式集群搭建

    1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...

  7. Postgresql 监控sql之 pg_stat_statements模块

    postgresql.confpg_stat_statements.max = 1000000pg_stat_statements.track = allpg_stat_statements.trac ...

  8. java循环队列实现代码

    public class Queue { //队首指针 private int front; //队尾指针 private int rear; //数组 private int[] arr; //数组 ...

  9. VMware Workstation改动存储位置之后,软件变成全英文,修改成中文的方法

    今天想改动一下VMware Workstation的位置  改动之后打开软件,本来的中文改成了英文,整了很长时候,最后发现是因为改动一下位置之后,虽然zh_CN语言包还在,但是Vmware找不到本来的 ...

  10. Mysql workbench 字段类型(转载)

    转载自:https://blog.csdn.net/j_h_xie/article/details/52924521 项目初始,在使用workbench建表时,字段中有PK,NN,UQ,BIN,UN, ...