2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽

2024-02-22 09:12

本文主要是介绍2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

思维导图

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数

将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空

widget.h:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QDebug>
#include<QPushButton>//按钮类
#include<QLabel>//标签类
#include<QLineEdit>//行编辑器类
#include<QMovie>//动图类
#include <QPainter>
#include <QPixmap>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_loginBtn_clicked();void on_loginBtn_1_clicked();private:Ui::Widget *ui;QMovie *mv=new QMovie(":/picture/gou.gif");
};
//重写paintEvent函数
class CircularLabel:public QLabel
{
public:CircularLabel(QWidget *parent=nullptr):QLabel(parent){}void paintEvent(QPaintEvent *event) override{QLabel::paintEvent(event);//调用基类的paintEvent以处理标准绘制QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);//抗锯齿QPixmap pixmap(":/picture/qq0.jpg");//加载图片pixmap=pixmap.scaled(this->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation);QPainterPath path;path.addEllipse(0,0,this->width(),this->height());//创建一个圆形路径painter.setClipPath(path);//设置裁剪路径为圆形painter.drawPixmap(0,0,pixmap);//绘制图片}
};
#endif // WIDGET_H

main.cpp:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

widget.cpp:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置窗口标题this->setWindowTitle("QQ快聊");//设置窗口图标this->setWindowIcon(QIcon(":/picture/qq.png"));//给动图类mv设置父组件mv->setParent(this);//给标签logLab1填充动图mvui->logLab1->setMovie(mv);//将动图mv设置自适应标签ui->logLab1->setScaledContents(true);//让动图动起来mv->start();//给标签logLab2填充图片ui->logLab2->setPixmap(QPixmap(":/picture/qqq.jpg"));//将标签logLab2图片设置自适应标签ui->logLab2->setScaledContents(true);//创建一个圆形标签CircularLabel *headLab=new CircularLabel(this);//移动标签到固定位置headLab->move(350,150);//重设标签大小headLab->resize(111,111);//给标签userNameLab填充图片ui->userNameLab->setPixmap(QPixmap(":/picture/userName.jpg"));//将标签userNameLab图片设置自适应标签ui->userNameLab->setScaledContents(true);//给标签passwdLab填充图片ui->passwdLab->setPixmap(QPixmap(":/picture/passwd.jpg"));//将标签passwdLab图片设置自适应标签ui->passwdLab->setScaledContents(true);//给行编辑器userNameEdit设置占位ui->userNameEdit->setPlaceholderText("QQ账号/手机号/邮箱");//给行编辑器passwdEdit设置占位ui->passwdEdit->setPlaceholderText("密码");//给行编辑器passwdEdit设置显示模式  输入该行编辑器时内容不可见ui->passwdEdit->setEchoMode(QLineEdit::Password);//手动连接系统提供的信号和槽  基于qt4版本  该连接是不友好connect(ui->loginBtn,SIGNAL(clicked()),this,SLOT(on_loginBtn_clicked()));//手动连接系统提供的信号和自定义的槽函数  基于qt5版本  该连接是友好的connect(ui->loginBtn,&QPushButton::clicked,this,&Widget::on_loginBtn_1_clicked);
}Widget::~Widget()
{delete ui;
}void Widget::on_loginBtn_clicked()
{//获取行编辑器userNameEdit和passwdEdit输入的内容并和要求的admin和123456进行比对if(ui->userNameEdit->text()=="admin"&&ui->passwdEdit->text()=="123456"){qDebug() << "登录成功";close();}else{qDebug() << "登录失败";ui->passwdEdit->clear();}
}
void Widget::on_loginBtn_1_clicked()
{//获取行编辑器userNameEdit和passwdEdit输入的内容并和要求的admin和123456进行比对if(ui->userNameEdit->text()!="admin"||ui->passwdEdit->text()!="123456"){qDebug() << "登录失败";ui->passwdEdit->clear();}
}

widget.ui:

运行结果:

登录失败:

 登录成功:

 

这篇关于2.21 Qt day2 菜单栏/工具栏/状态栏/浮动窗口、UI界面、信号与槽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734789

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

列举你能想到的UNIX信号,并说明信号用途

信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。 UNIX定义了许多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变信号;SIGKILL表示终止程序运行的信号,等等。信号量编程是UNIX下非常重要的一种技术。 Unix信号量也可以

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig

Qt多语种开发教程

Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中。 今天讲讲,Qt开发的正序怎么做多语言开发。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置发育就显示法语等。 开发环境(其实多语种这块根环境没太大关系):win10,Qt.5.12.10 一.先用QtCreator创建一个简单的桌面程序 1.工程就随便命名“LanguageTest”,其他默认。 2.在设计师

Golang GUI入门——andlabs ui

官方不提供gui标准库,只好寻求第三方库。 https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。 第三方gui库 找了好多,也比较了好多,最终决定使用的是还是 https://github.com/andlabs/ui 相信golang gui还会发展的更好,期待更优秀的gui库 由于andlabs