# Qt_day1

2023-05-16

Qt_day1

1. 项目框架

#include <QApplication>

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    
    //.....
    
    return app.exec();//程序进入到循环
}

2. 窗口类常见的成员函数

show() ----------------- 显示窗口
setText() -------------- 设置显示的文字
move(横坐标,纵坐标) ----- 设置窗口显示的左上角的坐标(父窗口)
resize(,) ---------- 设置窗口大小
setWindowTitle()-------- 设置窗口标题

setFont(QFont &f) --------- 设置字体(QFont 字体类)

setPalette(QPalette &p) --- 设置调色板(QPalette 调色板类)
setColor ----- 设置颜色 (QColor 颜色类)
(给某个部件设置颜色:先定义颜色对象,再定义调色板对象,把颜色对象传给调色板对象,最后把调色板对象传给要修改颜色的部件)

setCursor(QCursor &c) ----- 设置鼠标参数(QCursor 鼠标/光标类)

eg1. 成员函数练习

#include "mywidget.h"
#include <QFont>
#include <QPalette>
#include <QColor>
#include <QCursor>

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    lab1 = new QLabel("你好",this);
    lab2 = new QLabel("再见",this);

    this->resize(1024,768);

    lab1->move(100,100);
    lab2->move(240,200);

    lab1->resize(300,50);

    QFont f1("Times",16,16,true);
    lab1->setFont(f1);
    QFont f2("Times",32,32);
    lab2->setFont(f2);

    QColor c(0,0,255);
    QPalette p;
    p.setColor(QPalette::WindowText,c);
    lab1->setPalette(p);
    c.setRgb(255,0,0);
    p.setColor(QPalette::WindowText,c);
    lab2->setPalette(p);

    QCursor cs(Qt::CrossCursor);
    lab2->setCursor(cs);
}

MyWidget::~MyWidget()
{
}

//当然,lab1和lab2要在MyWidget类中定义(定义为指针)

3. 信号与槽机制

1 图解

在这里插入图片描述

1.信号和槽用于对象之间的通信,信号可以由某种动作触发,也可以直接由代码触发
2.槽也叫槽函数,当完成了信号和槽的连接,一旦触发信号,自动调用连接的槽函数
3.信号和槽的连接是动态,对象释放之后断开所有的信号和槽
4.代码触发信号的语法:
emit 信号; //信号的格式就是函数声明的格式,但是无需实现

2 连接

//基本语法
connect(发送信号对象的地址,信号,接收信号对象的地址,槽函数);

//3种不同的连接方式
connect(发送信号对象的地址,SIGNAL(信号),接收信号对象的地址,SLOT(槽函数));
connect(发送信号对象的地址,信号,接收信号对象的地址,槽函数);
connect(发送信号对象的地址,信号,接收信号对象的地址,[&](){
	//响应信号的代码(相当于槽函数)
});

eg2. 练习:实现一个窗口,有一个标签和两个按钮。按下第一个按钮将label显示文字放大为32X32,松开第一个按钮时恢复原状。点击第二个按钮文字颜色在蓝色和红色之间切换。

#include "mywidget.h"
#include <QFont>
#include <QPalette>
#include <QColor>

mywidget::mywidget(QWidget *parent)
    : QWidget(parent)
{
    //构建对象
    lab = new QLabel("你好",this);
    bt1 = new QPushButton("改变文字大小",this);
    bt2 = new QPushButton("改变文字颜色",this);

    //移动位置,简单布局
    this->resize(400,240);
    lab->move(150,30);
    lab->resize(140,50);
    bt1->move(80,100);
    bt1->resize(100,30);
    bt2->move(190,100);
    bt2->resize(100,30);

    QFont f("宋体",16,16);
    lab->setFont(f);

    QObject::connect(bt1,&QPushButton::pressed,this,[&](){
        QFont f1("宋体",32,32);
        lab->setFont(f1);
    });

    QObject::connect(bt1,&QPushButton::released,this,[&](){
        QFont f2("宋体",20,20);
        lab->setFont(f2);
    });

    QObject::connect(bt2,&QPushButton::clicked,this,&mywidget::set_color);
}

mywidget::~mywidget()
{

}

void mywidget::set_color()
{
    if(flag == 0)
    {
        QColor red(255,0,0);  //红色
        QPalette p2;
        p2.setColor(QPalette::WindowText,red);
        lab->setPalette(p2);
        flag=1;
    }else
    {
        QColor blue(0,0,255);  //蓝色
        QPalette p1;
        p1.setColor(QPalette::WindowText,blue);
        lab->setPalette(p1);
        flag=0;
    }
}

注意:
1.只有类型相同的信号和槽才能连接
2.一个信号可以连接多个槽,一个槽也可以连接多个信号

3 断开

断开信号和槽的连接
QObject::disconnect(参数和connect一样);
//对象销毁时自动断开信和槽,该函数极少使用

4 信号的传递

信号也可以连接信号。一旦连接,前一个信号发送会自动触发后一个信号,信号可以通过该方式传递下去。
语法:
QObject::connect(发送信号对象的地址,信号,接收信号对象的地址,信号);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

# Qt_day1 的相关文章

随机推荐

  • 【数据结构与算法】(JAVA版)8大排序算法带图文解说,选择排序,冒泡排序,插入排序,希尔排序,快速排序,归并排序,基数排序,堆排序

    排序算法 常见排序列表 xff1a 1 冒泡排序 xff08 Bubble Sorting xff09 span class token keyword package span span class token namespace que
  • 【数据结构与算法】(Java)二分法查找,插值查找,斐波那契查找,哈希表应用场景:员工信息管理在内存中

    查找算法 有序表查找 二分法查找 span class token keyword package span span class token namespace dataStructure span span class token pu
  • ubuntu 20.04 | 设置默认 python、pip(软连接)并换源

    ubuntu 20 04 设置默认python pip xff08 软连接 xff09 并换源 PythonPip1 安装pip32 建立软连接3 更换pip源4 更新pip5 卸载pip6 使用pip6 1 pip安装软件包6 2 pip
  • JavaWeb实现简单登录功能

    创建一个web项目 xff0c 配置好Tomcat xff0c java环境 xff0c 并部署到idea中 xff0c 安装好MySQL并导入jar包 mysql connector的jar包 jquery的js包 servlet api
  • telnet是什么

    Telnet是远程连接服务 xff0c 它工作于tcp ip协议的应用层 telnet命令通常用来远程登录 是Internet远程登陆服务的标准协议和主要方式 它为用户提供了在本地计算机上完成远程主机工作的能力 在终端使用者的电脑上使用te
  • 头文件与库文件的区别

    一 头文件与库文件的区别 头文件一般而言 xff0c 是申明和定义 库文件是已经编译好的二进制代码 这个二进制代码可以是动态的 xff0c 如 so xff1b 也可以是静态的 xff0c 如 a 如果是动态的 xff0c 则最后生成的程序
  • C++入门 vector的使用 + 进阶【模拟实现】

    目录 基本接口函数介绍迭代器空间容量增删查改迭代器失效问题探讨 vector模拟实现reserve迭代器空间容量删除insert析构函数vector拷贝构造函数拷贝赋值运算符 基本接口函数介绍 函数名功能vector xff08 重点 xf
  • C++11:继承

    目录 继承的基本概念 继承方式 基类和派生类对象赋值转换 切片 继承中的作用域 派生类的四个成员函数 xff1a 构造函数 拷贝构造函数 赋值重载 析构函数 静态成员 继承与友元 多继承 菱形继承 多继承的指针偏移问题 组合 继承的基本概念
  • socket编程二十六:基于UDP的服务器端和客户端

    前面的文章中我们给出了几个 TCP 的例子 xff0c 对于 UDP 而言 xff0c 只要能理解前面的内容 xff0c 实现并非难事 UDP中的服务器端和客户端没有连接 UDP 不像 TCP xff0c 无需在连接状态下交换数据 xff0
  • 下载高清电影的必须收藏的网站

    下载高清电影的必须收藏的网站 Posted 2012 12 06 分类 生活范儿 电影 生活范儿 电影 CHD 虽然蓝光推出 xff0c 但是高清已经势不可挡 xff0c 动辄几G甚至几十G一部的电影冲击着我们的视觉 xff0c 也考验着我
  • 电赛总结|电赛注意事项

    电赛总结 赛前 1 准备模块非常重要 如果没有提前准备模块 xff0c 在赛中也是在想尽办法买模块 xff0c 只是花更多的钱和运费等 xff0c 也不会去自己搭 所以赛前一定要准备模块 常见模块 降压模块 xff0c 升压稳压模块 xff
  • Putty使用教程

    Putty作为免费且开源的老牌 SSH 客户端 xff0c PuTTY 经常用于 Windows 下连接管理远程服务器 为方便刚接触 VPS 的新手参考使用 xff0c 本文配合截图介绍 PuTTY 的基础用法及一些设置技巧 xff0c 希
  • #Python实现话题的发布与订阅

    Python实现话题的发布与订阅 首先我们的先了解ROS文件系统的基本框架 xff0c 如下图所示 xff1a 由上图可知 xff0c py文件放在工作包里面的scripts文件夹内 xff0c 所以 xff0c 整活 xff01 1 在工
  • #创建自定义topic

    创建自定义topic 前面我们学了用C 43 43 和Python创建发布者与订阅者 xff0c 这次我们创建自定义的话题 xff0c 其实同C 43 43 实现topic差不多 xff0c 都是编写 cpp文件 步骤有点多且繁琐 xff0
  • #使用TF实现海龟机器人跟随

    使用TF实现海龟机器人跟随 昨天粗略地讲解了一会儿TF变换 xff0c 用的是ROS系统中自带的功能包实现小海龟跟随的功能 xff08 具体见 初识TF变换 xff09 今天我们将用自己编写节点的方式实现小海龟跟随的功能 xff0c 并且
  • #创建虚拟机器人URDF模型

    创建虚拟机器人URDF模型 题外话 xff1a 作业发布已有一两天了 xff0c 之所以今天才编辑这篇博客 xff0c 是因为我也遇到问题了 xff0c 现在以及解决了 xff08 小细节 xff1a 创建功能包之前先编译工作空间确保里面已
  • # gazebo 仿真

    gazebo 仿真 1 给 base link 添加惯性 xff0c 碰撞以及 gazebo 属性 在路径xqrobot description urdf xacro 件夹下新建 件夹 gazebo xff0c 并在 gazebo 件下创建
  • #Gmapping

    Gmapping 开始之前先安装两个功能包 xff0c 命令如下 xff1a sudo apt span class token operator span get install ros span class token operator
  • #navigation

    navigation 1 安装相关依赖 sudo apt span class token operator span get install ros span class token operator span kinetic span
  • # Qt_day1

    Qt day1 1 项目框架 span class token macro property span class token directive hash span span class token directive keyword i