【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自带的组件,无法满足我们对界面的追求时。

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

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

相关文章
|
3月前
Qt类结构分析
Qt类结构分析
60 3
|
1月前
(8)Qt中的自定义信号
本文介绍了如何在Qt框架中创建和使用自定义信号,并通过一个父子窗口切换的示例来展示自定义信号的实现和应用。
65 3
(8)Qt中的自定义信号
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
87 0
|
1月前
(7)Qt中的自定义槽(函数)
这篇文章介绍了在Qt中如何定义和使用自定义槽函数,包括类成员函数、静态类成员函数、全局函数和lambda表达式作为槽函数的示例,以及使用lambda表达式时的注意事项。
36 2
(7)Qt中的自定义槽(函数)
|
1月前
|
编译器
【项目开发】QT简单练习之QQ登录界面模仿
为了进一步加深对QT开发的理解,在学习完基础操作之后要进行一个简单的练习。
|
2月前
|
设计模式 前端开发 安全
Qt注册类对象单例与单类型区别
在进行开发时,应当根据具体的应用场景和需求来选择使用单例模式或是单类型。如果是全局服务或状态管理,可能需要单例模式;如果是为了使QML环境下的不同组件能够访问到同一个后端服务对象,则可能需要使用单类型。
34 2
|
3月前
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
71 4
|
3月前
|
编解码 开发框架
【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
【Qt 学习笔记】Qt窗口 | Qt窗口介绍 | QMainwindow类及各组件介绍
239 3
|
3月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
83 2
|
3月前
【qt】自定义对话框(2)
【qt】自定义对话框(2)
23 0