Linux 学习记录46(QT篇待完成)

news2024/9/21 18:41:59

Linux 学习记录46(QT篇)

在这里插入图片描述

本文目录

  • Linux 学习记录46(QT篇)
  • 一、建立QT项目工程
  • 二、
    • 1.
    • 2.
  • 三、自动生成的文件介绍
    • 1. tempprj.pro
    • 2. mainwindow.h
    • 3. mainwindow.cpp
    • 4. main.cpp
    • 5. mainwindow.ui
  • 四、常用类的介绍
    • 1. 信息调试类
      • (1. qDebug
      • (2. 输出当前界面尺寸
      • (3. 设置当前界面尺寸
      • (4. 设置当前窗口界面
    • 1. 按钮类
    • 1. 类
  • 思维导图
  • 练习
    • 1. 自定义登录页面

一、建立QT项目工程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、

1.

2.

三、自动生成的文件介绍

在这里插入图片描述

1. tempprj.pro

.pro是一个工程管理文件,依据这个文件来生成makefile文件来编译源文件

#添加相关的类库,例如进程线程库、网络编程库、数据库等待
QT  += core gui #默认提供两个类库: core包含了核心库,io相关操作等 gui库提供了图形化相关的类库

#如果qt版本超过4.0,就会多加一个widgets类库,大部分组件全部来自于该库
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = tempprj
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#该版本支持C++11以后的C++语法
CONFIG += c++11

#管理源文件
SOURCES += \
        main.cpp \
        mainwindow.cpp

#管理头文件
HEADERS += \
        mainwindow.h

#管理ui文件
FORMS += \
        mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

2. mainwindow.h

#ifndef MAINWINDOW_H//防止文件重复包含
#define MAINWINDOW_H

#include <QMainWindow>//由于类中使用的QMainwindow,所以引入的头文件

//该命名空间是在ui文件对应的头文件中定义的,只是在此处进行声明
namespace Ui {
class MainWindow;
}

//自定义的类,界面类,该类继承了QMainwindow
class MainWindow : public QMainWindow
{
    Q_OBJECT//信号与槽的元对象

public:
    explicit MainWindow(QWidget *parent = nullptr);//构造函数的声明 指定该组件的父组件的
    ~MainWindow();//析构函数的声明

private:
	//ui界面类中的Mywnd实例化出来的对象指针,可以使用该指针,在后期找到ui界面上拖拽出来的组件
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

3. mainwindow.cpp

#include "mainwindow.h"//自定义头文件的引入
#include "ui_mainwindow.h"//ui界面对应头文件的引入

//构造函数的定义
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
//初始化列表,在类的初始化列表中必须显性调用父类的有参构造完成对继承下来成员的初始化工作

    ui(new Ui::MainWindow)//给自己的指针成员实例化空间
{
    ui->setupUi(this);//给ui界面上的组件申请空间,并初始化到ui界面上
}

//析构函数的定义
MainWindow::~MainWindow()
{
    delete ui;//释放ui指针空间
}

4. main.cpp

#include "mainwindow.h"//引用自定义头文件
#include <QApplication>//引用应用程序头文件

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);//使用应用程序实例化了一个对象a
    MainWindow w;//使用自定义的类实例化一个对象
    w.show();//将界面展示

    return a.exec();//阻塞等待对面上的操作,不然程序结束
    //可以等待:用户操作组件,信号发送,相关的事件触发
}

5. mainwindow.ui

图形化界面操作
在这里插入图片描述

四、常用类的介绍

接下来的程序编写基本上都在以下界面下
在这里插入图片描述

1. 信息调试类

需要导入 #include <QDebug> #include <QIcon>

(1. qDebug

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    qDebug("hello word\r\n");
    qDebug("%s","hello word\r\n");

}

输出>>
在这里插入图片描述

(2. 输出当前界面尺寸

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    qDebug()<<this->size();//当前界面尺寸
    qDebug()<<this->frameSize();//组件实际大小不包括边框
    qDebug()<<this->rect().size();//当前界面所占用矩形框的尺寸

}

输出>>
在这里插入图片描述

(3. 设置当前界面尺寸

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //重新设置当前界面尺寸
    this->resize(800,600);
    //使用重载函数重新设置当前界面尺寸,参数是一个匿名对象
    this->resize(QSize(400,300));

    qDebug()<<this->size();//当前界面尺寸
}

输出>>
在这里插入图片描述

(4. 设置当前窗口界面

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //设置最大尺寸
    this->setMaximumSize(400,300);
    //设置最小尺寸
    this->setMinimumSize(300,200);
    //设置固定尺寸
//    this->setFixedSize(128,64);
    //重新设置当前界面尺寸
    this->resize(800,600);
    //设置窗口类型为纯净窗口
//    this->setWindowFlag(Qt::FramelessWindowHint);
    //设置窗口标题
    this->setWindowTitle("proj");//当前界面尺寸
    //设置窗口图标
    this->setWindowIcon(QIcon("C:\\Users\\Hao\\Desktop\\buf\\link.jpg"));//设置窗口图标
    //使用样式表更改颜色
    this->setStyleSheet("background-color:grey");
    //设置串口透明度
    this->setWindowOpacity(0.5);
    //窗口位置
    this->move(30,500);
    //获取窗口标题
    qDebug()<<this->windowTitle();//当前界面尺寸
    qDebug()<<this->size();//当前界面尺寸
}

输出>>
在这里插入图片描述

1. 按钮类

需要添加头文件 #include <qpushbutton.h>


1. 类

需要添加头文件

思维导图

练习

1. 自定义登录页面

#include "mainwindow.h"

#include "public.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QFont UPfont;
    /************窗口设置*************/
    //设置固定尺寸
    this->setFixedSize(600,360);
    this->setWindowTitle("Qt window");//当前界面尺寸
    //设置窗口图标
    this->setWindowIcon(QIcon("C:\\Users\\Hao\\Desktop\\buf\\Qt_w.png"));//设置窗口图标
    this->setStyleSheet("background-color:#F5F5F5");

    /************标签设置*************/
    QLabel *theme1 = new QLabel(this);//主题
    theme1->resize(600,180);
    theme1->setPixmap(QPixmap("C:\\Users\\Hao\\Desktop\\buf\\Qt.jpg"));

//    QLabel *theme2 = new QLabel(this);//Pass word
//    theme2->resize(600,180);
    theme2->setPixmap(QPixmap("C:\\Users\\Hao\\Desktop\\buf\\green.png"));
//    theme2->move(0,180);
    lab4->setScaledContents(true);

    QLabel *lab2 = new QLabel(this);//UID
    lab2->resize(40,30);
    lab2->move(210,200);
    lab2->setPixmap(QPixmap("C:\\Users\\Hao\\Desktop\\buf\\IDcard.png"));
    lab2->setScaledContents(true);

    QLabel *lab3 = new QLabel(this);//Pass word
    lab3->resize(30,30);
    lab3->move(215,240);
    lab3->setPixmap(QPixmap("C:\\Users\\Hao\\Desktop\\buf\\OnePassword.png"));
    lab3->setScaledContents(true);

    /************按键设置*************/
    UPfont.setPointSize(15);
    UPfont.setFamily("宋体");
    QPushButton *log_on = new QPushButton(QIcon("C:\\Users\\Hao\\Desktop\\buf\\登录.png"),"登录", this);
    QPushButton *cancel = new QPushButton(QIcon("C:\\Users\\Hao\\Desktop\\buf\\取消.png"),"取消", this);

    log_on->resize(80,40);
    log_on->move(200,280);
    log_on->setStyleSheet("border:none;border-radius:10px;background-color:#87CEFA;color:#fff");

    cancel->resize(80,40);
    cancel->move(320,280);
    cancel->setStyleSheet("border:none;border-radius:10px;background-color:#87CEFA;color:#fff");

    /**********行编辑器设置*************/
    UPfont.setPointSize(12);
    UPfont.setFamily("宋体");

    QLineEdit *psrd = new QLineEdit(this);
    //重新设置大小
    psrd->resize(130,30);
    //移动
    psrd->move(260,240);
    // 设置样式表
    psrd->setStyleSheet("border:none;border-radius:10px;background-color:#696969;color:#fff");
    //设置占位文本
    psrd->setPlaceholderText("Pass word");
    psrd->setEchoMode(QLineEdit::Password);
    psrd->setFont(UPfont);


    QLineEdit *UID = new QLineEdit(this);
    //重新设置大小
    UID->resize(130,30);
    //移动
    UID->move(260,200);
    // 设置样式表
    UID->setStyleSheet("border:none;border-radius:10px;background-color:#696969;color:#fff");
    //设置占位文本
    UID->setPlaceholderText("UID");
    UID->setFont(UPfont);

}

MainWindow::~MainWindow()
{

}

效果>>
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第七章:YOLO v2网络详解

(目标检测篇&#xff09;系列文章目录 第一章:R-CNN网络详解 第二章:Fast R-CNN网络详解 第三章:Faster R-CNN网络详解 第四章:SSD网络详解 第五章:Mask R-CNN网络详解 第六章:YOLO v1网络详解 第七章:YOLO v2网络详解 第八章:YOLO v3网络详解 文章目录 系列文章目录技…

PYQT QWidget的方法介绍

https://img-blog.csdnimg.cn/bae4318f1a9342ff85c9e7d27652cf91.png

uniapp打包app,对接华为厂商,实现unipush离线消息推送

今天终于可以抽出点时间&#xff0c;来记录一下这几天心塞的心情。上周公司派过来一个活&#xff0c;说是使用uniapp制作一个app&#xff0c;同时要实现在线消息推送和离线消息推送&#xff0c;啥话没说就揽了下来。不过说实在的&#xff0c;从来没有开发过app&#xff0c;好歹…

【网络安全带你练爬虫-100练】第9练:post提交/提取json数据包

目录 一、目标1&#xff1a;post提交json数据包 二、目标2&#xff1a;接收json数据包 三、目标3&#xff1a;提取指定的键值 四、网络安全小圈子 一、目标1&#xff1a;post提交json数据包 &#xff08;大家可以自己随便找一个&#xff0c;像一些登录过的网站刷新一下&am…

jenkins构建历史设置保留数量

jenkins默认保留构建历史所有&#xff0c;这样磁盘空间越来越小&#xff0c;设置保留个数。 进入job项目中-配置 勾选Discard old builds&#xff0c;设置保留天数和个数&#xff0c;可以只填保留个数。 应用保存job配置&#xff0c;并重新构建项目&#xff0c;重新构建完成后…

基于pyqt5+opencv实现16位tif影像转jpg

现在大部分图像软件都支持tiff影像的浏览&#xff0c;但都是仅限于8位的影像&#xff0c;对应CV16U类型的tiff影像并不支持&#xff08;这需要专业的gis软件才可进行操作&#xff09;。为了便捷操作&#xff0c;故此基于pyqt5opencv实现16位tif影像转jpg的软件。 本博文涉及基于…

OpenCV4通道的分离split(),通道的合并merge(),通道的混合mixChannels()

文章目录 1、通道的分离函数 split()函数原型&#xff1a;&#xff08;1&#xff09;函数原型一&#xff1a;用 Mat型数组 Mat mvbegin[3]存储分离后的图像&#xff1b;输入参数&#xff1a; &#xff08;2&#xff09;函数原型二&#xff1a;用 vector容器 vector <Mat>…

科技中心PMO的建设与实践︱德邦证券PMO专家张鉴庭

德邦证券科技中心PMO专家张鉴庭先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾&#xff0c;演讲议题&#xff1a;科技中心PMO的建设与实践。大会将于8月12-13日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 在数字化转型的背景下&#xff0c…

jvm对象创建和内存分配优化

一、创建对象过程 1、类加载检测 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否是否已被加载、解析和初始化过。如果没有&#xff0c;那必须先执行相应的类加载过程。 …

ModaHub魔搭社区:向量数据库Milvus Lite的优势和适配场景

目录 Milvus Lite 的优势 Milvus Lite 的适配场景 如何安装、部署和使用 Milvus Lite? 总结 想要体验世界上最快的向量数据库&#xff1f;缺少专业的工程师团队作为支撑&#xff1f;Milvus 安装环境受限&#xff1f; 别担心&#xff0c;轻量版 Milvus 来啦&#xff01; …

火爆全网,python自动化测试 parametrize参数化+allure测试报告(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 pytest的参数化&a…

1763_gcc编译c语言makefile自动生成工具的Perl实现_Linux

全部学习汇总&#xff1a; GreyZhang/g_makefile: Learn makefile from all kinds of tutorials on the web. Happy hacking and lets find an common way so we may dont need to touch makefile code any more! (github.com) 其实&#xff0c;调试完这个之后觉得之前Windows上…

开源:老朋友,新棋局

在软件开发领域&#xff0c;开源已经成为一股强大的力量&#xff0c;为企业带来了巨大的好处。我深知开源的价值和影响力。其中之一就是降低开发成本。传统的软件开发往往需要庞大的开发团队和昂贵的授权费用&#xff0c;但开源软件将这一切变得通俗易懂。 避免了重复造轮子&a…

ROS-Moveit!配置

文章目录 1. SW2URDF2.Moveit下载及初始化3.自碰撞矩阵 Self-Collisions4.虚拟关节 Virtual Joints&#xff08;不配置&#xff09;5.规划组 Planning Groups添加机械臂规划组添加夹爪规划组 6.机器人姿态 Robot Pose7.末端执行器 End Effectors8.作者信息 Author Information9…

(秋招)面激光slam必备知识--scan context

scan context是一个描述场景的描述符&#xff0c;它之前不是用在slam上面的&#xff0c;但是有人将它用到激光slam上面&#xff0c;发现还可以&#xff0c;于是这个scan context就用来进行激光slam的位置识别(做闭环用的)。 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过…

Python基础综合案例-数据可视化(地图)

今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化 数据来源:线上公布数据&#xff0c;需要可私信 前期准备工作&#xff1a;Python可视化准备工作 前期模块安装等前期基础的准备工作大家可以看我之前的文章讲解&#xff0c;有问题可…

< 每日算法 - JavaScript解析:一文解决 “ 买卖股票 ” 系列算法题 >

每日算法 - JavaScript解析&#xff1a;一文解决 “ 买卖股票 ” 系列算法题 一、基础题目> 题目> 解题思路定义操作定义状态动态规划值所需变量完整代码 二、添加条件&#xff1a;当交易次数为 ∞ 时> 题目> 解决思路 三、添加条件&#xff1a;当交易次数为 K nu…

小机器人在现实世界中学会快速驾驶

小机器人在现实世界中学会快速驾驶 —强化学习加上预训练让机器人赛车手加速前进— Without a lifetime of experience to build on like humans have (and totally take for granted), robots that want to learn a new skill often have to start from scratch. Reinforceme…

【案例教程】GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质灾害在世界范围内频繁发生。我国除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉…

AI对话宝-智能AI在线问答写作

AI对话宝的工作原理是基于自然语言处理技术。当用户与其进行交互时&#xff0c;AI对话宝会根据用户的输入&#xff0c;通过算法和模型来理解用户的意图&#xff0c;并给出相应的回答&#xff0c;并且系统还可以不断学习并优化其回答&#xff0c;从而提高其交互的效率和准确性。…