【Qt】day2

文章目录

  • 菜单栏
  • 工具栏
  • 状态栏
  • 铆接部件(浮动窗口)
  • 中心部件
  • 添加图片
  • 对话框
    • 模态对话框
    • 非模态对话框
    • 标准对话框(信息对话框)
      • 错误对话框
      • 信息对话框
      • 提问对话框
      • 警告对话框
    • 其他标准对话框
      • 颜色对话框
      • 文件对话框
    • 字体对话框
  • 登录窗口布局
  • 按钮介绍
    • 工具按钮
    • 单选按钮RadioButton
    • 多选按钮 CheckBox
  • QListWidget
    • Q列表容器
  • QTreeWidget 树控件
  • QTableWidget 表格控件
  • 其他控件介绍
    • 有滑动的 Scrool Area
    • 类似好友列表 Tool Box
    • 网站头名 Tab Widget
    • 栈空间
    • 下拉框
    • 其他控件
    • QLabel显示图片
    • QLable显示 gif动态图片

菜单栏

菜单栏最多有一个

库文件include <QMenuBar>

创建菜单栏:QMenuBar * bar = menuBar();
将菜单栏放入窗口中:setMenuBar(bar);
创建菜单:
QMenu *fileMenu = bar->addMenu("文件"); QMenu *editMenu = bar->addMenu("编辑");
创建菜单项:
QAction * newAction = fileMenu->addAction("新建");
添加分割线:fileMenu->addSeparator();

工具栏

工具栏可以有多个
库文件include <QToolBar>

创建工具栏:QToolBar * toolBar = new QToolBar(this);
将工具栏投放在窗口:addToolBar(Qt::LeftToolBarArea,toolBar);
设置 只允许 左右停靠:toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
设置浮动:toolBar->setFloatable(false);
设置移动(总开关):toolBar->setMovable(false);
工具栏中可以设置内容:toolBar->addAction(newAction);
添加分割线:
toolBar->addSeparator();
工具栏添加控件:
QPushButton * btn = new QPushButton("aa",this);
toolBar->addWidget(btn);

状态栏

库文件include <QStatusBar>

创建状态栏:QStatusBar * stBar = statusBar();
设置到窗口:setStatusBar(stBar);
放标签控件 加上库函数:
QLabel * label = new QLabel("提示息",this);
stBar->addWidget(label);

//标签放在右侧
QLabel * label2 = new QLabel("右侧提示信息",this);
stBar->addPermanentWidget(label2);

铆接部件(浮动窗口)

可以有多个
库函数include<QDockWidget>

创建浮动窗口:QDockWidget * dockWidget = new QDockWidget("浮动",this);

添加到窗口:addDockWidget(Qt::BottomDockWidgetArea,dockWidget);

设置后期停靠区域,只允许上下:
dockWidget->setAllowedAreas(Qt::TopDockWidgetArea|Qt::DockWidgetArea_Mask);

中心部件

只能一个
这里以文本编辑为例子,引入库函数#include<QTextEdit>

//创建中心部件
QTextEdit * edit = new QTextEdit(this);
//添加到窗口
setCentralWidget(edit);

技巧:只能添加一个的都是set;能够添加多个的都是add

添加图片

1.复制好图片的文件夹,找到项目的地址
在这里插入图片描述
2.粘贴到项目中在这里插入图片描述
3.在qt中添加文件夹
在这里插入图片描述

在这里插入图片描述
4.双击打不开,要“open in Editor”
在这里插入图片描述
5.先添加前缀,然后添加文件
在这里插入图片描述
6.点击编译后,即在目录看到图片了
在这里插入图片描述
7.使用图片 “ : + 前缀名 + 文件名 ”
在这里插入图片描述

对话框

引入库函数#include<QMessageBox>

模态对话框

不可以对其他窗口进行操作 会有阻塞.

    connect(ui->actionnew,&QAction::triggered,[=](){
        QDialog dlg(this);

        dlg.exec();
        qDebug() << "模态对话框弹出了";

    });

非模态对话框

可以对其他窗口进行操作。
防止一闪而过,创建到堆区。

    connect(ui->actionnew,&QAction::triggered,[=](){
        QDialog * dlg2 = new QDialog (this);
        dlg2->resize(200,100);
        dlg2->show();

        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        qDebug()<<"非模态对话框弹出了";
    });

标准对话框(信息对话框)

错误对话框

connect(ui->actionnew,&QAction::triggered,[=](){
	QMessageBox::critical(this,"critical","错误");
    });

信息对话框

connect(ui->actionnew,&QAction::triggered,[=](){
	QMessageBox::information(this,"info","信息");
    });

提问对话框

参数
QMessageBox::question(父亲, 标题,提示内容 , 按键类型, 默认关联回车按键);
可以用if函数来根据回答来做出反应。

connect(ui->actionnew,&QAction::triggered,[=](){
        if(QMessageBox::Save==this,"que","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
        {
            qDebug()<<"选择的是保存";
        }
        else{
            qDebug()<<"选择的是取消";
        }
    });

警告对话框

connect(ui->actionnew,&QAction::triggered,[=](){
	QMessageBox::warning(this,"warning","警告");
    });

其他标准对话框

颜色对话框

引入库函数:#include<QColorDialog>

connect(ui->actionnew,&QAction::triggered,[=](){
    QColor color =QColorDialog::getColor(QColor(255,0,0));
    qDebug() << "r=" << color.red() << "g= " <<color.green() << "b=" <<color.blue();
    });

文件对话框

引入库函数:#include<QFileDialog>

QFileDialog::getOpenFileName(父亲,标题,默认打开路径)

connect(ui->actionnew,&QAction::triggered,[=](){
    QString str = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\Gemini\\Desktop","(*.cpp)");
    qDebug()<<str;
    });

字体对话框

引入库函数:#include <QFontDialog>

connect(ui->actionnew,&QAction::triggered,[=](){
    bool flag;
    QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
    qDebug()<<"字体:"<<font.family().toUtf8().data()<<"字号"<<font.pointSize()<<"大小"<<font.pointSize()<<"是否加粗"<<font.bold()<<"是否倾斜"<<font.italic();

    });

登录窗口布局

1."Push Button"是按钮,“Line Edit”是行编辑,"Lable"是文字,拖拽出来并写上内容。
选择“Widgest”,把用户名和密码及行编辑放入其中,然后选择栅格布局(几行几列的矩阵布局)
选择“Widgest”,把2个按钮放入其中,然后选择水平布局
在整个大页面中选择垂直布局
布局信息可在对象信息查看到。
,
在这里插入图片描述

2.添加弹簧,弹簧可固定为某个值。
在这里插入图片描述

3.把Widget调固定。
在这里插入图片描述

4.固定窗口到一个合适的大小
在这里插入图片描述
5.更改密码的可视情况在这里插入图片描述
6.部件与窗口间有默认认的像素点 间隙,需要可以改。
在这里插入图片描述

按钮介绍

工具按钮

1.选择"tool bush",再添加图片。(图片资源需自己添加到文件夹中,之前有过程)
在这里插入图片描述
2.选择这个。才不会只有图片显示。

在这里插入图片描述
3.凸起风格autoRaise,结果如图。
在这里插入图片描述

单选按钮RadioButton

1.选择2个单选按钮,并用Group Box分组到一起
在这里插入图片描述
2.如要设置默认则

ui->rBtMan->setCheckable(true);

打印所选信息:

    connect(ui->rBtWoman,&QRadioButton::clicked,[=](){
        qDebug() <<"选中女了!!";
    });

多选按钮 CheckBox

1.选择4个多选按钮,并用Group Box分组到一起
在这里插入图片描述

2.选中的状态是2,未选择的状态是0,半选中的状态是1 (在trustate打勾)
这里是以“老板娘好”为例,把它的object改为cBox
在这里插入图片描述

在这里插入图片描述
3. 打印"老板娘好"的状态信息

    connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){
        qDebug() << state;
    });

在这里插入图片描述

QListWidget

Q列表容器

1.选择List Widget
在这里插入图片描述
2.//利用listWidget写诗

     QListWidgetItem * item = new QListWidgetItem("锄禾日当午");
    // 将一行诗放入到listWidget框架中
     ui -> listWidget->addItem(item);
    //设置居中方式
     item->setTextAlignment(Qt::AlignCenter);

3.可以利用addItems一次性添加整个诗内容

    //QStringList   QList<QString>
    QStringList list;
    list << "锄禾日当午"<<"汗滴禾下土"<<"谁知盘中餐"<<"粒粒皆辛苦";
    ui ->listWidget->addItems(list);

在这里插入图片描述

QTreeWidget 树控件

    //设置水平头
    ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");

    QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<<"力量");
    QTreeWidgetItem * minItem = new QTreeWidgetItem(QStringList()<<"敏捷");
    QTreeWidgetItem * zhiItem = new QTreeWidgetItem(QStringList()<<"智力");

    //加载顶层的节点
    ui->treeWidget->addTopLevelItem(liItem);
    ui->treeWidget->addTopLevelItem(minItem);
    ui->treeWidget->addTopLevelItem(zhiItem);

    //追加子节点
    QStringList heroL1;
    heroL1 << "刚被猪"<<"前排坦克,能吸收伤害的同时造成客观的范围输出";
    QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
    liItem->addChild(l1);

在这里插入图片描述

QTableWidget 表格控件

    //TableWidget控件
    //设置列数
    ui ->tableWidget->setColumnCount(3);

    //设置水平表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");

    //设置行数
    ui ->tableWidget->setRowCount(5);

    //设置正文
    ui->tableWidget->setItem(0,0,new QTableWidgetItem("亚瑟"));
    QStringList nameList;
    nameList<<"亚瑟"<<"赵云"<<"张飞"<<"关羽"<<"花木兰";

    QList<QString> sexList;
    sexList <<"男"<<"男"<<"男"<<"男"<<"女";

    for(int i=0;i<5;i++){
        int col =0 ;
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList.at(i)));
        //int 转 QString
        ui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number(i+10)));
    }

在这里插入图片描述

其他控件介绍

有滑动的 Scrool Area

在这里插入图片描述

类似好友列表 Tool Box

在这里插入图片描述
在这里插入图片描述

网站头名 Tab Widget

在这里插入图片描述

栈空间

点击哪个按钮,就跳转到哪个空间。

    //栈空间使用
    //设置默认定位 ScrollArea
    ui->stackedWidget->setCurrentIndex(1);

    //ScrollArea按钮
    connect(ui->btn_ScrollArea,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(0);
    });

    //ToolBox按钮
    connect(ui->btn_ToolBox,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(2);
    });

    //TabWidget按钮
    connect(ui->btn_TabWidget,&QPushButton::clicked,[=](){
        ui->stackedWidget->setCurrentIndex(1);
    });

在这里插入图片描述

下拉框

点击“拖拉机”的按钮,下拉框就自动选择“拖拉机”。

    //下拉框的内容
    ui->comboBox->addItem("奔驰");
    ui->comboBox->addItem("宝马");
    ui->comboBox->addItem("拖拉机");

    //点击按钮 选中拖拉机选项
    connect(ui->btn_select,&QPushButton::clicked,[=](){
        ui->comboBox->setCurrentIndex(2);
        ui->comboBox->setCurrentText("拖拉机");
    });

在这里插入图片描述

其他控件

在这里插入图片描述
在这里插入图片描述

QLabel显示图片

 ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));

QLable显示 gif动态图片

 //利用QLable显示 gif动态图片
 QMovie * movie = new QMovie(":/Image/mario.gif");
 ui->lbl_movie->setMovie(movie);
 //播放动图
 movie->start();

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/743264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《重构》读书笔记【第1章 重构,第一个示例,第2章 重构原则】

文章目录 第1章 重构&#xff0c;第一个示例1.1 重构前1.2 重构后 第2章 重构原则2.1 何谓重构2.2 两顶帽子2.3 为何重构2.4 何时重构2.5 重构和开发过程 第1章 重构&#xff0c;第一个示例 我这里使用的IDE是IntelliJ IDEA 1.1 重构前 plays.js export const plays {&quo…

将 MinIO 与 Keycloak OIDC 集成

Keycloak是一种单点登录解决方案。使用Keycloak&#xff0c;用户使用Keycloak而不是MinIO进行身份验证。如果没有Keycloak&#xff0c;您将不得不为每个用户创建一个单独的身份 - 从长远来看&#xff0c;这将很麻烦。您需要一个集中身份解决方案来管理 MinIO 的身份验证和授权。…

Python深度学习技术

原文链接&#xff1a;Python深度学习技术 近年来&#xff0c;伴随着以卷积神经网络&#xff08;CNN&#xff09;为代表的深度学习的快速发展&#xff0c;人工智能迈入了第三次发展浪潮&#xff0c;AI技术在各个领域中的应用越来越广泛。Transformer模型&#xff08;BERT、GPT-…

3.2 文件包含漏洞渗透实战(OWASP实战训练)

3.2 文件包含漏洞渗透实战&#xff08;OWASP实战训练&#xff09; 原理及危害3.低安全级别渗透3.1本地文件包含漏洞3.2 本地文件包含漏洞webshell3.3远程文件包含漏洞 上一节讲了本地文件包含和远程文件包含 本地文件包含需要将文件传上去或者不传上去&#xff08;本地系统的一…

导出 S 参数扫描结果供 INTERCONNECT 使用

导出 S 参数扫描结果供 INTERCONNECT 使用 正文正文 有时候,对于 FDTD 无法直接进行仿真的大型仿真链路,我们需要使用 FDTD 针对单个小的模块进行仿真,再将得到的 S 参数结果导入到 INTERCONNECT 中使用,最终完成整个链路的仿真。通常完成 S 参数扫描后其状态如下图所示:…

【数据结构】栈的定义与实现(附完整运行代码)

目录 一、栈的定义 二、顺序栈 链栈比较 三、栈的实现&#xff08;顺序栈&#xff09; 3.1 ❥ 定义栈结构 3.2 ❥ 初始化 3.3 ❥ 销毁 3.4 ❥ 插入&#xff08;入栈&#xff09; 3.5 ❥ 删除 &#xff08;出栈&#xff09; 3.6 ❥ 获取栈顶元素 3.7 ❥ 判空 3.8 ❥…

1962springboot VUE社区服务平台系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE社区服务平台系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解vue java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和…

光泽正在褪去,所以我们又回到了人工智能领域。

光泽正在褪去&#xff0c;所以我们又回到了人工智能领域。 人工智能冬天将被私有化 自从“人工智能”这个流行词在20世纪50年代被创造出来以来&#xff0c;人工智能经历了几次繁荣和萧条周期。 一种新的技术方法看起来很有趣&#xff0c;并取得了一些成果。它被荒谬地炒作并获…

EdgeOne 边缘函数 + Hono.js + Fauna 搭建个人博客

一、背景 虽然 “博客” 已经是很多很多年前流行的东西了&#xff0c;但是时至今日&#xff0c;仍然有一部分人在维护自己的博客站点&#xff0c;输出不少高质量的文章。 我使用过几种博客托管平台或静态博客生成框架&#xff0c;前段时间使用Hono.jsFauna &#xff0c;基于 …

热电发电机越来越受到研发关注

热电发电机 (TEG) 利用热量&#xff08;或更准确地说&#xff0c;温差&#xff09;和众所周知的塞贝克效应来发电。它们的应用范围从收集可用热能&#xff0c;尤其是在工业和其他情况下“浪费”的热能&#xff0c;到在放射性同位素热发电机 (RTG) 中使用航天器的放射性电源作为…

静电场的基本方程

目录 场积分方程 通量&#xff08;高斯定理&#xff09; 环量 场微分方程 散度 旋度 小结 补充知识 立体角 场积分方程 通量&#xff08;高斯定理&#xff09; 环量 场微分方程 散度 旋度 小结 补充知识 立体角

慢性病防治新策略:诊所管理系统助力健康管理变革

慢性病&#xff0c;如高血压、糖尿病等&#xff0c;正逐渐成为全球健康领域的重要挑战。据尚普咨询的数据显示&#xff0c;全球每年有4100万人死于慢性非传染性疾病&#xff0c;占全球死亡总数的71%。而在中国&#xff0c;随着经济社会发展和卫生健康服务水平的提高&#xff0c…

OpenAI突然宣布停止向中国提供API服务!

标题 &#x1f31f; OpenAI突然宣布停止向中国提供API服务! &#x1f31f;摘要 &#x1f4dc;引言 &#x1f4e2;正文 &#x1f4dd;1. OpenAI API的重要性2. 停止服务的原因分析3. 对中国市场的影响4. 应对措施代码案例 &#x1f4c2;常见问题解答&#xff08;QA&#xff09;❓…

使用AES,前端加密,后端解密,spring工具类了

学习python的时候&#xff0c;看到很多会对参数进行加密&#xff0c;于是好奇心驱使下&#xff0c;让我去了解了下AES加密如何在java中实现。 首先 npm install crypto-js 然后在你的方法中&#xff0c;给你们前端源码看看&#xff0c;因为我用的ruoyi框架做的实验&#xff…

iSCSI driver not found和Failed to start Open-iSCSI的解决方法

案例1&#xff1a;iscsi的配置有问题 方法&#xff1a;一般的处理方法为重装iscsi-initiator-utils。 案例2&#xff1a;linux安装了多个内核&#xff0c;启动所选的内核与iscsi服务不匹配 方法&#xff1a;重启系统&#xff0c;选择对应的内核版本启动系统。 &#xff08;注…

Python 围棋

效果图 完整代码 源码地址&#xff1a;Python 围棋 # 使用Python内置GUI模块tkinter from tkinter import * # ttk覆盖tkinter部分对象&#xff0c;ttk对tkinter进行了优化 from tkinter.ttk import * # 深拷贝时需要用到copy模块 import copy import tkinter.me…

机器学习课程复习——奇异值分解

1. 三种奇异值分解 奇异值分解&#xff08;Singular Value Decomposition, SVD&#xff09;包含了&#xff1a; 完全奇异值分解&#xff08;Complete Singular Value Decomposition, CSVD&#xff09;紧奇异值分解&#xff08;Tight Singular Value Decomposition, TSVD&…

赶快收藏!全网最佳 WebSocket 封装:完美支持断网重连、自动心跳!

文章目录 一、WebSocket 基础WebSocket 的基本使用 二、封装 WebSocket 客户端WebSocketClient 类使用 WebSocketClient 类解释代码实现 三、总结优点未来改进 &#x1f389;欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff…

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】卷积

卷积经常用在信号处理中&#xff0c;用于计算信号的延迟累积。假设一个信号发射器每个时刻 t t t产生一个信号 x t x_t xt​&#xff0c;其信息的衰减率为 w k w_k wk​&#xff0c;即在 k − 1 k-1 k−1个时间步长后&#xff0c;信息为原来的 w k w_k wk​倍&#xff0c;时刻 …

电脑图片压缩方法哪个好?这几个压缩方法必看

大家是否经常因为图片文件过大而无法轻松分享或上传而感到困扰&#xff1f;这说明你需要一款高效的图片压缩工具了。 无论是为了节省存储空间还是快速分享图片&#xff0c;拥有一款功能强大的图片压缩软件将极大地助你保存和分享图片。 今天&#xff0c;本文将介绍几款图片压…