QT开发实例之常用控件(上)

news2025/6/30 9:24:36

目录

  • QT控件使用范例
    • 设置窗口属性
    • 字体形状窗体
    • QPushButton 按钮
    • QLabel
    • QLineEdit 单行文本
    • QComboBox 下拉列表框
    • QFontComboBox 字体下拉列表框
    • QSpinBox 控件
    • QTimeEdit 时间控件
    • QDateEdit 日期控件
    • QScrollBar 滑动条控件
    • QRadioButton 单选按钮
    • QCheckBox 复选框

QT控件使用范例

设置窗口属性

为防止通过setWindowTitle 设置的窗口标题出现中文乱码的问题,需要将设置的参数进行一个转换,可以通过fromLocal8Bit 函数转换后就不会出现中文乱码的问题了。

learn::learn(QWidget *parent)
    : QMainWindow(parent)
    , bnt(nullptr)
{
    ui.setupUi(this);

    QString iconpath = "../Resource Files/WIN_20221114_17_56_03_Pro.jpg";
    //设置窗口标题
    setWindowTitle(QString::fromLocal8Bit("QT5.1窗口"));
    //设置窗口固定大小
    setMinimumSize(300, 300);
    setMaximumSize(300, 300);
    //设置窗口的背景颜色为红色
    this->setStyleSheet("background:red");
    //修改窗口的图标
    this->setWindowIcon(QIcon(iconpath));
}

字体形状窗体

将窗体背景色透明,根据图片形状显示窗体
在这里插入图片描述

void learn::SetLucency()
{
	//去掉标题栏
    this->setWindowFlags(Qt::FramelessWindowHint);
    //设置透明
    this->setAttribute(Qt::WA_TranslucentBackground, true);
    /*
		qss语句解释:
		background-image :背景图片
		url(xxx)   填写文件路径
		background-repeat:no-repeat;  不平铺
	*/
    this->setStyleSheet("background-image:url(C:/Users/26961/Desktop/1.png); background-repeat:no-repeat;");
}

QPushButton 按钮

在窗体中创建按钮 A,点击按钮 A,改变文字为按钮 B。

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_learn.h"
#include <QPushButton>
#include <qtimer.h>
#include <qpoint.h>
#include <QDebug>
#include <QMouseEvent>  

class learn : public QMainWindow
{
    Q_OBJECT

public:

    learn(QWidget *parent = nullptr);
    ~learn();
    // 按钮移动
    void MovePushButton();
    //鼠标点击
    void PressMouseEvent(QMouseEvent* e);
    //鼠标松开
    void ReleaseMouseEvent(QMouseEvent* e);
    //鼠标移动
    void MoveMouseEvent(QMouseEvent* e);
    //设置透明
    void SetLucency();
    //修改按钮
    void ChangeButtonText();
private:
    Ui::learnClass ui;
    QPushButton* bnt;
    QPoint last; //记录鼠标最近一次的坐标点
};


void learn::ChangeButtonText()
{
    if (!bnt)
    {
        delete bnt;
        bnt = nullptr;
    }
    bnt = new QPushButton(QString::fromLocal8Bit("修改文本"), this);
    //设置按钮的原点和宽高
    bnt->setGeometry(QRect(100, 100, 100, 25));
    //注册按钮处理事件
    connect(bnt, &QPushButton::clicked, this, [=]() 
        {
            bnt->setText(QString::fromLocal8Bit("按钮已经修改"));
        });
}

QLabel

在窗体中创建 QLabel 标签显示“我是 QLabel”字样,红色加粗倾斜字体。

在这里插入图片描述

void learn::ChangeLabel()
{
	if (!label)
    {
        delete label;
        label = nullptr;
    }
	//指定父对象, 设置Qlable文本
    this->label = new QLabel(QString::fromLocal8Bit("我是QLabel"), this);
    this->setGeometry(QRect(100, 100, 100, 25));
    /*
        font-size:20px  字体大小
        color:red       设置颜色
        font-weight:bold 字宽
        font-style:italic 字体样式
    */
    //设置Qlable qss样式
    label->setStyleSheet("font-size:20px; font-weight:bold; font-style:italic");
}

QLineEdit 单行文本

对输入的密码会进行一个隐藏设置

在这里插入图片描述

void learn::ChangeLineEdit()
{
    if (!line)
    {
        delete line;
        line = nullptr;
    }
    this->line = new QLineEdit(this);
    //设置单行坐标和宽高
    line->setGeometry(QRect(100, 100, 300, 25));
    //设置单行文本样式
    line->setStyleSheet("font-size:20px; font-weight:bold; font-style:italic");
    //限制最大长度为12
    line->setMaxLength(12);

	//不可写设置
    //line->setEchoMode(QLineEdit::NoEcho);

    //对密码进行隐藏设置
    line->setEchoMode(QLineEdit::Password);
}

QComboBox 下拉列表框

在这里插入图片描述

void learn::AddCharActer()
{
    if (this->box) {
        delete box;
        box = nullptr;
    }
    box = new QComboBox(this);
    box->setGeometry(QRect(100, 100, 300, 25));
    QStringList str;
    str << QString::fromLocal8Bit("数学")
        << QString::fromLocal8Bit("语文")
        << QString::fromLocal8Bit("地理");
    
    box->addItems(str);
}

QFontComboBox 字体下拉列表框

在这里插入图片描述

void learn::AddFontComboBox() 
{
	//创建字体下拉列表
    fontbox = new QFontComboBox(this);
    fontbox->setGeometry(QRect(100, 125, 300, 25));
    
    bnt = new QPushButton(QString::fromLocal8Bit("选择"), this);
    bnt->setGeometry(QRect(100, 100, 300, 25));
    
    line = new QLineEdit(this);
    line->setGeometry(QRect(100, 150, 300, 25));
    connect(bnt, &QPushButton::clicked, this, [=]()
        {
        	//当选择按钮被点击时,自动更换line 的信息
            line->setText(fontbox->currentText());
        });
}

QSpinBox 控件

在这里插入图片描述

void learn::AddSpinBox() 
{
    spin = new QSpinBox(this);
    spin->setGeometry(QRect(100, 125, 300, 25));

    //设置取值范围
    spin->setRange(0,100);
    //设置初始值
    spin->setValue(0);

	//除了初始值这些可以被修改,除此之外所有的文本都不允许被修改
    //后缀
    spin->setSuffix(QString::fromLocal8Bit("元/斤"));
    //前缀
    spin->setPrefix(QString::fromLocal8Bit("苹果"));
}

QTimeEdit 时间控件

在这里插入图片描述

void learn::AddTimeEdit() 
{
    time = new QTimeEdit(this);
    time->setGeometry(QRect(100, 125, 300, 25));
    
    //获取系统时间
    QDateTime systime = QDateTime::currentDateTime();
    
    //获取时分秒以“:”号拆分赋予 list 数组
    QStringList list = systime.toString("h:m:s").split(":");
    //打印系统时间
    qDebug() << list;
    //将时分秒绑定控件
    time->setTime(QTime(list[0].toInt(), list[1].toInt()));
}

QDateEdit 日期控件

在这里插入图片描述

void learn::AddDateEdit()
{
    date = new QDateEdit(this);
    date->setGeometry(QRect(100, 150, 300, 25));
    //获取系统时间
    QDateTime time = QDateTime::currentDateTime();
    QStringList list = time.toString("yyyy-MM-dd").split("-");
    date->setDate(QDate(list[0].toInt(), list[1].toInt(), list[2].toInt()));
}

QScrollBar 滑动条控件

在这里插入图片描述

void learn::AddScrollBar() 
{
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->ScrollBar = new QScrollBar(this);
    this->spin = new QSpinBox(this);
    //横显/竖显
    ScrollBar->setOrientation(Qt::Horizontal);
    //指定大小
    ScrollBar->setGeometry(QRect(50, 50, 180, 20));
    spin->setGeometry(QRect(50, 90, 100, 25));
    
    //控制条宽度
    ScrollBar->setPageStep(10);
    
    //随着scrollBar 按钮在不断的移动的过程中,spin控件会及时更新 scrollBar 的现值
    connect(ScrollBar, &QScrollBar::valueChanged, spin, [=]()
        {
            spin->setValue(ScrollBar->value());
        });
}

QRadioButton 单选按钮

在这里插入图片描述

void learn::AddRadioButton() 
{
    label = new QLabel(this);
    label->setText(QString::fromLocal8Bit("选择内容:"));
    line = new QLineEdit(this);

    this->radioW = new QRadioButton(QString::fromLocal8Bit("女人") , this);
    this->radioM = new QRadioButton(QString::fromLocal8Bit("男人"), this);
    //设置默认选择radioW
    radioW->setChecked(true);

    //位置
    line->setGeometry(QRect(130, 100, 100, 25));
    radioM->setGeometry(QRect(50, 50, 50, 50));
    radioW->setGeometry(QRect(100, 50, 50, 50));
    label->setGeometry(QRect(50, 100, 100, 25));

    connect(radioW, &QPushButton::clicked, this, [=]()
        {
            //当radioW 被勾选之后,label设置为radioW
            if (sender() == radioW) {
                this->line->setText(radioW->text());
            }
        });

    connect(radioM, &QPushButton::clicked, this, [=]()
        {
            //当radioW 被勾选之后,label设置为radioW
            if (sender() == radioM) {
                this->line->setText(radioM->text());
            }
        });
}

QCheckBox 复选框

在这里插入图片描述

void learn::AddCheckBox() 
{
    checkbox1 = new QCheckBox(QString::fromLocal8Bit("语文"), this);
    checkbox2 = new QCheckBox(QString::fromLocal8Bit("数学"), this);
    checkbox3 = new QCheckBox(QString::fromLocal8Bit("英语"), this);
    
    checkbox1->setGeometry(QRect(50, 50, 50, 50));
    checkbox2->setGeometry(QRect(100, 50, 50, 50));
    checkbox3->setGeometry(QRect(150, 50, 50, 50));
    label = new QLabel(this);
    label->setText(QString::fromLocal8Bit("选择内容:"));
    line = new QLineEdit(this);
    label->setGeometry(QRect(50, 100, 100, 25));
    line->setGeometry(QRect(130, 100, 100, 25));
    bnt = new QPushButton(QString::fromLocal8Bit("提交信息"), this);
    
    auto process = [&]() 
    {
        auto interval = QString::fromLocal8Bit("、");
        if (sender() == checkbox1) {
            line->insert(checkbox1->text() + interval);
        }
        if (sender() == checkbox2) {
            line->insert(checkbox2->text() + interval);
        }
        if (sender() == checkbox3) {
            line->insert(checkbox3->text() + interval);
        }
    };
    connect(checkbox1, &QCheckBox::clicked, this, process);
    connect(checkbox2, &QCheckBox::clicked, this, process);
    connect(checkbox3, &QCheckBox::clicked, this, process);
}

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

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

相关文章

[附源码]计算机毕业设计JAVA卡牌交易网站

[附源码]计算机毕业设计JAVA卡牌交易网站 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

华为认证HCIP的持证人数

华为认证hcip多少人通过了考试&#xff1f; hcip通过的人数比hcie多很多&#xff1b; 华为官方并没有披露hcip通过的相关数据。 唯一可以借鉴的数据&#xff1a;截止到2020年HCIE的持证人数大约在15000左右。 有多少人过了hcip其实并不是一件非常重要的事&#xff0c;重要的…

[附源码]java毕业设计演唱会售票系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Jan Ozer:高清直播互动场景下的硬编码如何选型?

前言 高清直播逐渐普及&#xff0c;硬编码也成为大势所趋。在 RTE 2022 大会上&#xff0c;来自 NETINT 的 Jan Ozer 通过一系列的对比测试结果&#xff0c;详细分享了如何为高清直播互动场景进行硬编码的技术选型。 本文内容基于演讲内容进行整理&#xff0c;为方便阅读略有删…

膜拜,华为18级工程师用349页构建高可用Linux服务器,其实并不难

前言 本文是华为高级工程师从Linux服务器性能调优与高可用集群构建、MySQL性能调优与高可用架构设计、自动化运维与Linux系统安全等多角度讲解构建高可用Linux服务器的方法和技巧。 希望大家能通过本文掌握 Linux 的精髓&#xff0c;轻松而愉快地工作&#xff0c;从而提高自己…

SwiftUI 后台刷新多个 Section 导致 global index in collection view 与实际不匹配问题的解决

问题现象 在复杂布局的 SwiftUI 视图中,用段(Section)来搭配组合其它容器视图(Form 或 List)无疑极具默契性。不过,在多个 Section 对应的数据被后台多线程修改时,往往会发生难以定位的错误,甚至导致 App 直接崩溃: 如上图所示,我们试图在后台线程更新多个 Section …

[附源码]java毕业设计药品管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

vue3.0的变化汇总

vue2迁移vue3 文档 https://www.javascriptc.com/vue3js/guide/migration/render-function-api.html 1.创建项目 npm init vite-app cd npm install npm run dev 2.setUp() 组合api的&#xff08;解决v2业务逻辑分散的问题&#xff09;方法可以单独写在外面的js。 -本质&…

大数据毕设选题 - 疫情实时数据分析可视化(Flask python)

文章目录1 前言1 课题背景2 数据库设计实现3 实现效果4 Flask框架5 爬虫6 Ajax技术7 Echarts8 最后1 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦! 这两年开始&#xff0c…

后端学习 - Zookeeper Kafka

实习项目用到了 Kafka&#xff0c;系统学习一下 文章目录Zookeeper一 概述二 数据结构和监听行为三 功能实现1 统一配置管理2 统一命名管理3 分布式锁4 集群管理Kafka一 系统架构1 架构图2 数量关系3 Consumer 重要参数二 工作流程1 消息写入过程2 数据不丢失&#xff1a;ACK、…

邯郸百亿斤粮食生产 国稻种芯·中国水稻节:河北大市粮食经

邯郸百亿斤粮食生产 国稻种芯中国水稻节&#xff1a;河北大市粮食经 记者黄涛、袁柯 人民网石家庄电 杨文娟 科技日报 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯中国水稻节 中国三农智库网-功能性农业农业大健康大会报道&…

Android Material Design之MaterialToolbar(三)

上图 引入 implementation com.google.android.material:material:1.4.0属性 属性描述app:menu右侧菜单文件app:navigationIcon左侧返回按钮app:title主标题栏文本app:titleCentered主标题栏文本是否居中app:titleTextColor主标题栏文本颜色app:subtitle子标题栏文本app:s…

OpenSergo ShardingSphere 社区共建微服务视角的数据库治理标准

作者&#xff1a;赵奕豪&#xff08;宿何&#xff09; 为什么需要微服务治理与 OpenSergo&#xff1f; 在经典微服务架构中&#xff0c;我们通常将服务调用中各角色划分为三部分&#xff1a;服务提供者、服务消费者、注册中心。经典的微服务架构可以解决微服务能调通、可以运…

我的家乡潍坊HTML静态网页 学生个人网页设计作品 学生家乡网页模板 简单个人主页成品

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

ESP8266 如何使用 GPIO13 GPIO15 进行 UART0 通信?

1. 修改默认的日志输出串口 UART0 为 UART1 使用 ESP8266 UART1&#xff08;GPIO2&#xff09;作为程序日志输出串口&#xff0c;可进行如下配置&#xff1a; menuconfig -> Component Config -> Common ESP-related Channel for console output -> Custom UARTUART…

蓝桥杯第十四届第二期题目【Java解析】

目录 ✏️写在前面 ✨历史回顾 &#x1f388;第一题&#xff08;二进制API&#xff09; 代码&#xff1a; 思路&#xff1a; &#x1f388;第二题&#xff08;闰年问题/时间API&#xff09; 代码1&#xff1a; 思路1&#xff1a; 代码2&#xff1a; 思路2&#xff1a…

【软件测试】出现频率最高,软件测试问题,所有考虑的解答......

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

【C++】经典二叉树面试题

二叉树前中后序遍历的实现 1.非递归实现 1 我们先回顾一下三种遍历&#xff1a; 前序遍历&#xff1a;根->左->右&#xff1a; F-C-A -D-B-E-H-G-M中序遍历&#xff1a;左->根->右&#xff1a; A-C-B-D-F-H-E-M-G后序遍历&#xff1a;左->右->根&#xf…

与“改善”形成两个轮子。落实“改善”的东西

与“改善”形成两个轮子。落实“改善”的东西 简单地说&#xff0c;“用心”不只是“用心”&#xff0c;科学地推进的思考就是“自工程完结”。这是一种彻底、科学地思考“只能做好工作”“只能做出好东西”的条件是什么。 “改善”、“QC循环”、“丰田生产方式”等&#xff…

Java常量:Java常量的定义和分类

常量是指在程序的整个运行过程中值保持不变的量。在这里要注意常量和常量值是不同的概念&#xff0c;常量值是常量的具体和直观的表现形式&#xff0c;常量是形式化的表现。通常在程序中既可以直接使用常量值&#xff0c;也可以使用常量。 Java入门基础视频教程&#xff0c;ja…