C++Qt学习——QLineEdit、QDialog、QScrollArea、QTabWidget、QListWidget

在本文里面,主要介绍这几种控件的使用QLineEdit、QDialog、QScrollArea、QTabWidget、QListWidget。并且举例子。

目录

1、QLineEdit(仿QQ登录界面制作)

2、QDialog(仿支付对话框制作)

3、QScrollArea(仿面板滚动视图)

4、QTabWidget(面板切换效果)

5、QListWidget(仿QQ好友列表)

5.1、准备工作

5.2、编辑widget.ui。

6、代码分析


1、QLineEdit(仿QQ登录界面制作)

A、首先拖入Line Edit

B、在placeholderText里面输入内容

C、关于密码这一栏,我们设置echoMode为password

D、设置QlineEdit的样式表,没有边框

QLineEdit{
	border:none;
}

 E、添加Pushbutton,并且与对应的 LineEdit水平布局

F、将两个QLineEdit垂直布局

G、为了让效果更佳好一点,添加水平垂直弹簧。

H、创建qss文件,使得在悬停的时候有一个过度

QPushButton#pushButton {border-image: url(:/icons/pulldown.png)}
QPushButton#pushButton:hover {border-image: url(:/icons/pulldown_2.png)}

QPushButton#pushButton_2 {border-image: url(:/icons/login.png)}
QPushButton#pushButton_2:hover {border-image: url(:/icons/login_2.png)}

I、拖动窗口,发现不随窗体大小变化而变化

 J、最终效果展示

2、QDialog(仿支付对话框制作)

A、创建一个dialog项目

B、打开UI界面,因为要设置圆角(border-radius)QDialog不支持,所以我们拖入一个QFrame

C、设置样式表。

QFrame{
	background-color: white;
	border-radius:25px;
}

D、在界面拖入Label、Line Edit、PushButton,并调成自己满意的大小

E、设置水平垂直布局

F、取消pushbutton的样式表

QPushButton{
	color:#1E90FF;
	border-top:1px;
	border-right:1px;
	border-style:solid;
	border-color: #bbbbbb;
}

QPushButton:pressed{
	background-color:#dddddd;
	border-bottom-left-radius: 25px;
}

G、确定pushbutton的样式表

QPushButton{
	color:#1E90FF;
	border-top:1px;
	border-left:1px;
	border-style:solid;
	border-color: #bbbbbb;
}

QPushButton:pressed{
	background-color:#dddddd;
	border-bottom-right-radius: 25px;
}

取消确定控件触发函数

H、运行一下,发现不需要最上边的部分

I、打开dialog.cpp,设置边框隐藏和透明背景

J、查看效果

3、QScrollArea(仿面板滚动视图)

A、打开UI界面,拖入ScrollArea

B、设置大小为600,480

C、改变样式表

QScrollBar:vertical {
	width: 10px;
     background: white;
}

 QScrollBar::handle:vertical {
     background: rgba(200, 200, 200,50%);
	border-radius:15px;	
 }

QScrollBar::add-line:vertical {
	width:0px;
	height:0px;
 }

 QScrollBar::sub-line:vertical {
	width:0px;
	height:0px;
 }

 QScrollBar::handle:vertical:hover {
     background: rgba(200, 200, 200,80%);
 }

D、设置子文件的样式表

QWidget{
	background-color: white
}

E、根据需求,打开或者关闭横纵滚动条

F、注意:星耀出现滚动条的话,必须ScrollArea的宽或者高必须大于QWidget的宽高

4、QTabWidget(面板切换效果)

A、打开UI,拖入TabWidget

B、设置样式表

第一个是不需要边框

第二个是隐藏tab的高和宽

QTabWidget{
	border:none;
}

 QTabBar::tab {
	width:0px;
	height:0px;
}

C、拖入ListWidget

QListWidget{
	background-color:#dddddd;
	border:none;
}

QListWidget::item{
	height: 50px;
}

QListWidget::item:selected{
		background-color:white; 
		color: black;
}

D、双击,添加项目

E、将两个控件水平布局

F、设置TabWidget的首页

G、右键ListWidget转到槽

H、查看效果

5、QListWidget(仿QQ好友列表)

5.1、准备工作

A、创建QWidget文件,并基于该文件按创建子类

B、打开qqitem.ui,托入三个QLabel控件

C、拖入一个Widget,将控件放在里面,并于另一个QLabel做一个水平布局

D、水平弹簧的sizetype设置成Fixed

5.2、编辑widget.ui。

A、拖入控件,并水平垂直布局

B、QListWidget样式表

QListWidget::item{
	height:65px;
}

QListWidget::item:selected{
	background-color:rgb(200,200,200)
}

QListWidget::item:hover{
	background-color:rgb(220,220,220)
}

 C、LineEdit样式表

QLineEdit{
	background: transparent;
	border:none;
}

D、打开qqitem.h

 //多条记录插入的时候
     explicit QQItem(QString icon, bool flag, QString name_text, QWidget *parent = nullptr);

  E、打开qqitem.cpp

//做了多个接口
QQItem::QQItem(QString icon, bool flag, QString name_text, QWidget *parent) :
    QWidget(parent),
    ui(new Ui::QQItem)
{
    ui->setupUi(this);
//    QImage image(":/icons/icon1.png");
//    //image.scaled(ui->icon->width(),ui->icon->height())将图表显示一样大小
//    ui->icon->setPixmap(QPixmap::fromImage(image.scaled(ui->icon->width(),ui->icon->height())));
//    //右下角 phone
//    QImage image2(":/icons/phone.png");
//    ui->phone->setPixmap(QPixmap::fromImage(image2.scaled(ui->phone->width(),ui->phone->height())));

//    //设置名字
//    ui->name_text->setText("天下第一帅哥");
    QImage image(icon);
    //image.scaled(ui->icon->width(),ui->icon->height())将图表显示一样大小
    ui->icon->setPixmap(QPixmap::fromImage(image.scaled(ui->icon->width(),ui->icon->height())));
    //右下角 phone
    QImage image2(":/icons/phone.png");
    ui->phone->setPixmap(QPixmap::fromImage(image2.scaled(ui->phone->width(),ui->phone->height())));
    //手动控制手机是否可以显示
    ui->phone->setVisible(flag);
    //设置名字
    ui->name_text->setText(name_text);
}

 F、设置widget.cpp文件

//引用头文件
#include "qqitem.h"
#include <QListWidgetItem>
class QQItem;
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 铺满
    this->setLayout(ui->verticalLayout);
    //QQItem *qqItem= new QQItem(":/icons/icon1.png",true, "风子兰特",this);
    QQItem *qqItem0= new QQItem(":/icons/icon1.png",true, "风子兰特");
    QQItem *qqItem1= new QQItem(":/icons/icon2.png",false, "天下第一帅");
    QQItem *qqItem2= new QQItem(":/icons/icon3.png",true, "张三");

    QListWidgetItem*item0=new QListWidgetItem;
    QListWidgetItem*item1=new QListWidgetItem;
    QListWidgetItem*item2=new QListWidgetItem;

    ui->listWidget->addItem(item0);
    ui->listWidget->addItem(item1);
    ui->listWidget->addItem(item2);

    ui->listWidget->setItemWidget(item0,qqItem0);
    ui->listWidget->setItemWidget(item1,qqItem1);
    ui->listWidget->setItemWidget(item2,qqItem2);
}

 G、查看效果

6、代码分析

链接:https://pan.baidu.com/s/1CIzDK_8FXUuTcHqvtuhxEA 提取码: fann

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-18 09:30:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-18 09:30:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-18 09:30:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-18 09:30:04       20 阅读

热门阅读

  1. vue的一些个人理解

    2024-03-18 09:30:04       22 阅读
  2. 怎样合理规划游戏的玩法、关卡结构及剧情线?

    2024-03-18 09:30:04       22 阅读
  3. Windows程序员用MAC:安装win双系统、wintogo和删除

    2024-03-18 09:30:04       20 阅读
  4. Python数据分析与可视化笔记一 机器学习概述

    2024-03-18 09:30:04       20 阅读
  5. Docker常用命令

    2024-03-18 09:30:04       20 阅读
  6. 私域流量运营的关键要素和基本步骤

    2024-03-18 09:30:04       20 阅读
  7. 实验11-2-5 链表拼接(PTA)

    2024-03-18 09:30:04       20 阅读
  8. fpga_图像处理

    2024-03-18 09:30:04       19 阅读