【qt】自定义界面类

简介: 【qt】自定义界面类

一.为什么使用自定义界面类

当我们需要个性化的界面的时候,Qt自带的组件无法满足我们的时候,我们可以自己来组合组件来进行自定义界面类。

二.怎么使用自定义界面类

1.在哪里

选择空白,完全由我们自己来设置

给这个类取个名字。

然后就会多出三个文件:

2.开始设计

拖拉3个标签

设置头像的区域


设置昵称的大小和粗体:

这就是我设计的界面

3.对界面类添加功能

在qmyqq.h中定义:

    void setHeadImg(QString img);
    void setNickName(QString name);
    void setInfo(QString name);

注意定义成公共接口哦。

在qmyqq.cpp中实现:

#include "qmyqq.h"
#include "ui_qmyqq.h"

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

QMyqq::~QMyqq()
{
    delete ui;
}

void QMyqq::setHeadImg(QString img)
{
    //标签也可以设置图片
    ui->labelHead->setPixmap(QPixmap(img).scaled(120,120));
}

void QMyqq::setNickName(QString name)
{
    ui->labelNickName->setText(name);
}

void QMyqq::setInfo(QString info)
{
    ui->labelInfo->setText(info);
}

4.开始使用

记得要添加是自己定义的头文件哦!

    #include "qmyqq.h"
    ...
    QMyqq* myqq=new QMyqq(this);//自己定义的
    myqq->setHeadImg(":/image/girl.png");
    myqq->setInfo("天上天下唯我独尊");
    myqq->setNickName("姚哥");
    myqq->setGeometry(10,10,600,120);

运行结果:

三.优化项目

OK,现在我们已经知道了,如何自定义界面类了

书接上回,我们要优化我们的项目。

添加个性标签。

首先可以将我们刚刚的自己自定义的文件导入到我们上次写的

toolBox里面.

我们当时时在toolBox里面添加的ListWidgetListWidget里面添加的QListWidgetItem列表项,因为列表项只能设置一个图片和文本,不能达到我们的要求,所以我们只能自定义界面类。

QListWidget *listW=new QListWidget;
    for(int i=0;i<60;i++)
    {
        QListWidgetItem *item=new QListWidgetItem;
        item->setSizeHint(QSize(600,130));//设置列表项的大小
        listW->addItem(item);//添加空壳列表项

        //自定义界面的设置
        MyQQ *qq=new MyQQ;
        qq->setHeadImage(":/image/girl.png");
        qq->setNickName("好友"+QString::number(i+1));
        qq->setInfo("好好学习甜甜咸咸");

        listW->setItemWidget(item,qq);//列表项用自定义组件
    }

    ui->toolBox->addItem(listW,"我的好友 60");//添加到toolBox

运行结果:

当然这些图片名称等都是重复的,我们可以来个随机添加,哈哈

void Dialog::initUI()
{
   int count= ui->toolBox->count();
   for(int i=count-1;i>=0;i--)
   {
       ui->toolBox->removeItem(i);
   }

   srand(time(0));

    QStringList listName={"村和","安九","南方菇凉","花","早点睡"};
    QStringList listInfo={"为什么昨天又碎不着","我的人生我找找","到处走走","明知道不可为而为之是最大的幸福","2024年5月17日22:06:28"};


    QListWidget *list=new QListWidget;
    for(int i=0;i<61;i++)
    {
        QListWidgetItem *item=new  QListWidgetItem;
        item->setSizeHint(QSize(600,130));

        qqq* qq=new qqq();
        int num=rand()%5;
        int index=rand()%5;
        int index1=rand()%5;
        qq->setHeadImage(":/image/girl"+QString::number(num)+".png");
        qq->setNickName(listName[index]);
        qq->setInfo(listInfo[index1]);

        list->addItem(item);
        list->setItemWidget(item,qq);
       
    }
    ui->toolBox->addItem(list,"好友 61");
}

运行结果:

爽歪歪呀!你也来试试看吧!

四.总结一下

主要就是当Qt自带的组件,无法满足我们对界面的追求时。

我们可以自定义界面类,可以自己设计界面,和用代码进行控制界面的对外的接口。

乞丐不会妒忌百万富翁,但是他肯定会妒忌收入更高的乞丐。

相关文章
|
11天前
|
C++
Qt中的信号与槽如何学习?(包括自定义信号)这篇文章告诉你
以现实中的事件来举例的话,例如有两把不同颜色的信号枪,分别是红色,绿色,打响不通颜色的信号枪会触发不同的槽发生,比如说打响红色这个人就跑步,绿色就走步,但是还有一个很重要的机制,那就是连接,我们需要把信号枪去跟这个人的动作连接起来。 如果上面理解没问题的话我们可以把信号和槽看成两个工具,我们最重要的是如何去把这两个工具连接起来。 它的作用可以让我们更加灵活的去使用不同窗口间的切换以及某些事件的连接。
|
2月前
|
开发者
Qt 布局(QSplitter 类&QDockWidget 类) 总结
Qt 布局(QSplitter 类&QDockWidget 类) 总结
Qt 布局(QSplitter 类&QDockWidget 类) 总结
|
20天前
使用QMovie类来实现在QT中的动态加载效果。
使用QMovie类来实现在QT中的动态加载效果。
21 0
|
2月前
|
Windows
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
Qt 目录操作(QDir 类)及展示系统文件实战 & QFilelnfo 类介绍和获取文件属性项目实战
|
1月前
|
API
【Qt】Qt定时器类QTimer
【Qt】Qt定时器类QTimer
|
2月前
|
C++
【qt】自定义代理类
【qt】自定义代理类
13 0
|
10天前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
31 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
25天前
|
关系型数据库 MySQL 项目管理
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
数据库大作业——基于qt开发的图书管理系统(四)项目目录的整理与绘制登录页面
|
25天前
|
SQL 关系型数据库 MySQL
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库
数据库大作业——基于qt开发的图书管理系统(三)Qt连接Mysql数据库