QMainWindow

菜单栏

菜单栏 最多有一个

//菜单栏创建,一个
QMenuBar *menu = new QMenuBar(this);
// this->setMenuBar(menu); //创建菜单
QMenu *file_menu = menu->addMenu("文件");
QMenu *edit_menu = menu->addMenu("编辑");
//创建菜单项
QAction *new_action = file_menu->addAction("新建");
//添加分割线
file_menu->addSeparator();
QAction *open_action = file_menu->addAction("打开");

工具栏

可以有多个。可以添加菜单项或者小控件

//工具栏,多个
QToolBar *tool = new QToolBar(this);
this->addToolBar(Qt::RightToolBarArea, tool);
tool->addAction("1");
tool->addAction("2");
//只允许左右停靠
tool->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
//禁用 浮动
tool->setFloatable(false);
tool->addAction(new_action);
//添加控件
QPushButton *btn = new QPushButton("hello", this);
tool->addWidget(btn);
//禁用移动
tool->setMovable(false);

状态栏

//状态栏,一个
QStatusBar *status = new QStatusBar(this);
setStatusBar(status); //标签控件
QLabel *label = new QLabel("提示信息",this);
status->addWidget(label);
QLabel *label2 = new QLabel("右侧提示信息", this);
status->addPermanentWidget(label2);

铆接部件

//铆接部件,多个
QDockWidget *dock = new QDockWidget("浮动", this);
addDockWidget(Qt::BottomDockWidgetArea, dock);
//设置后期停靠区域,只允许上下
dock->setAllowedAreas(Qt::TopDockWidgetArea);

中心部件

//中心部件,一个
QTextEdit *text_edit = new QTextEdit(this);
setCentralWidget(text_edit);

对话框

模态与非模态

对话框分为模态和非模态。模态就是不能对其他窗口进行操作,因为被阻塞了。非模态是可以对其他窗口进行操作的。区别就在于是对象创建区域和显示方式。

//弹出一个对话框
connect(ui->actionnew, &QAction::triggered, [&](){
//对话框 分类
//模态对话框(不可以对其他窗口进行操作)和非模态对话框(可以对其他窗口进行操作)
//模态创建 阻塞
// QDialog dlg(this);
// dlg.resize(240, 240);
// dlg.exec();
// qDebug() << "模态对话框弹出了";
//非模态对话框
//QDialog dlg2(this);//这种方法窗口会一闪而过,因为对象在栈里面,退出函数之后会导致数据消失
//dlg2.show();
//new的数据存放在堆里面,需要手动释放才会消失
QDialog *dlg2 = new QDialog(this);
dlg2->setAttribute(Qt::WA_DeleteOnClose);//这样在关闭对话窗口的时候会删除该数据,避免内存泄漏
dlg2->show(); });

消息对话框

//错误对话框
// QMessageBox::critical(this, "critical", "错误");
//信息对话框
// QMessageBox::information(this, "info", "信息");
//question
//父窗口, title, text, 选项, 默认选项
// if(QMessageBox::Save == QMessageBox::question(this,
// "question", "问题",
// (QMessageBox::Save|QMessageBox::Cancel),
// QMessageBox::Cancel)){
// qDebug() << "You select save";
// }
// else{
// qDebug() << "You select cancel";
// }
//警告
QMessageBox::warning(this, "warning", "警告");

颜色选取

//颜色
QColor color = QColorDialog::getColor();
qDebug() << "r = " << color.red() << "g = " << color.green() << "b = " << color.green();

文件选择

//文件选取对话框
//父窗口、标题、默认路径、要求文件后缀
// QString file_name = QFileDialog::getOpenFileName(this, "打开文件", "D:\\Users\\wangzhankun\\qt\\test", "*.cpp");
// qDebug() << file_name;
qDebug() << QFileDialog::getExistingDirectory(this, "打开文件夹");

字体选择

bool flag = true;
QFont font = QFontDialog::getFont(&flag, QFont("华文彩云", 36), this);
qDebug() << "字体" << font.family()
<< "字号" << font.pointSize()
<< "是否加粗" << font.bold()
;

登录窗口布局

  1. 实现登陆窗口

  2. 利用布局方式 给窗口进行美化

  3. 选取 widget 进行布局 ,水平布局、垂直布局、栅格布局

  4. 给用户名、密码、登陆、退出按钮进行布局

  5. 默认窗口和控件之间 有9像素间隙,可以调整 layoutLeftMargin

  6. 利用弹簧进行布局

  7. sizePolicy控制widget高度是否与内容一致

  8. echoMode修改为password

Qt编程基础入门之二的更多相关文章

  1. PHP基础入门(二)【PHP函数基础】

    PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...

  2. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  3. MyBatis基础入门《二十》动态SQL(foreach)

    MyBatis基础入门<二十>动态SQL(foreach) 1. 迭代一个集合,通常用于in条件 2. 属性 > item > index > collection : ...

  4. MyBatis基础入门《二》Select查询

    MyBatis基础入门<二>Select查询 使用MySQL数据库,创建表: SET NAMES utf8mb4; ; -- ---------------------------- -- ...

  5. Java编程基础——数组和二维数组

    Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...

  6. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  7. PHP基础入门(二)---入门必备哦!

    前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...

  8. PHP基础入门(二)---入门基础知识必备

    前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...

  9. c语言编程基础入门必备知识

    数据类型 基本数据类型 类型名称说明char字符类型存放字符的ASCII码int整型存放有符号整数short短整型存放有符号整数long长整型存放有符号整数long long存放有符号整数float单 ...

随机推荐

  1. ViewStub

    在书上了解了ViewStub,但只是带过两笔,没能了解.在网上搜索了一些资料,虽然很多文章都讲得比较完善,但是觉得可能是表达的原因,导致某个点上我理解错误,慢慢的才算比较清楚的认识ViewStub. ...

  2. 【Canvas】(2)---绘制折线图

    绘制折线图 之前在工作的时候,用过百度的ECharts绘制折线图,上手很简单,这里通过canvas绘制一个简单的折线图.这里将一整个绘制过程分为几个步骤: 1.绘制网格 2.绘制坐标系 3.绘制点 4 ...

  3. 使用 PyQt5 实现图片查看器

    一.前言 在学习 PyQt5 的过程中我会不断地做一些小的 Demo,用于让自己能够更好地理解和学习,这次要做的就是一个图片查看器,主要功能包括打开图片.拖动图片.放大和缩小图片. 最终实现的图片查看 ...

  4. Pie 杭电1969 二分

    My birthday is coming up and traditionally I'm serving pie. Not just one pie, no, I have a number N ...

  5. D-Power Products

    题目连接: 题解: 根据题目的意思,对每个X进行质因子分解,保存其质因子以及质因子出现的个数,如果两个数的乘积变成一个数的K次幂,那么两个数的质因子的指数之间相加应为k的倍数.保存完毕后,开始遍历,将 ...

  6. JMeter分布式压测实战(2020年清明假期学习笔记)

    一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...

  7. JavaScript基础1225

    JavaScript函数 1.函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. tip:JavaScript对大小写敏感.关键词function必须是小写,并且必须以与函数名称相同的大小写 ...

  8. vue2.x学习笔记(十八)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12629705.html. 处理边界情况 这里记录的都是和处理边界情况有关的功能,即一些需要对vue的规则做一些小调 ...

  9. mongodb connection refused because too many open connections: 819

    Env Debian 9 # 使用通用二进制方式安装 # mongod --version db version v3.4.21-2.19 git version: 2e0631f5e0d868dd5 ...

  10. 进程管理工具 Supervisor

    要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 n ...