Qt 5.14.2 学习记录 —— 팔 QWidget 常用控件(3)

文章目录


1、cursor

改变鼠标光标形状。

在Qt Designer界面中,拖一个按钮过来,右边属性面用户可以自己改cursor属性。

代码方法,先拖一个按钮到界面上:

cpp 复制代码
#include <QPushButton>

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

    QCursor cursor(Qt::WaitCursor);
    ui->pushButton->setCursor(cursor);
}

左击WaitCursor,ctrl + 左键就可以看到库中自带的都有哪些样式。

要自定义,那就把图片导入到qrc中,和上一篇博客写的一样的方法,而widget.cpp中要用QPixmap这个对象来表示一个图片。

cpp 复制代码
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPixmap pixmap(":/aaa.png");
    QCursor cursor(pixmap);
    ui->pushButton->setCursor(cursor);
}

不过此时默认,鼠标点击时是在图片的左上角点击了一个点,可以修改这个位置

cpp 复制代码
QCursor cursor(pixmap, 4, 7);

后面的两个数字是热点的位置,以图片左上角为原点,那么(4, 7)就是鼠标真正点击的位置。

图片缩放

cpp 复制代码
// 不修改原图片而返回新图片
pixmap = pixmap.scaled(40, 70);

这里有大量免费图标可供下载:阿里巴巴矢量图标库

2、font

QFont

拖拽一个控件到界面,就可以更改文本的font属性。

代码:

cpp 复制代码
#include <QLabel>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    QLabel* label = new QLabel(this);
    label->setText("文本");
    
    QFont font;
    font.setFamily("仿宋");
    font.setPixelSize(47);
    font.setBold(true);
    font.setItalic(true);
    font.setUnderline(true);
    font.setStrikeOut(true);
    label->setFont(font);
}

3、toolTip

鼠标悬停到某个控件时,就能显示这个控件的作用。

setToolTip设置提示的内容,setToolTipDuration设置提示存在的时间,单位为ms。

cpp 复制代码
#include <QPushButton>

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

    ui->pushButton_yes->setToolTip("yes按钮");
    ui->pushButton_yes->setToolTipDuration(4000);

    ui->pushButton_no->setToolTip("no按钮");
    ui->pushButton_no->setToolTipDuration(7000);
}

4、focusPolicy

关于焦点,点击输入框,才能输入内容,如果中途点击了其它地方,再次敲键盘,输入框就没有继续输入内容。这个属性设置控件获取到焦点的策略。

控件获取到焦点的方式通常为鼠标点击和tab键。


拖多个Line Edit控件到界面,运行查看,默认鼠标左键和tab键可以修改焦点。修改属性的focusPolicy为NoFocus,这个框就得不到焦点了。

5、styleSheeyt

通过CSS设置widget的样式,这些样式叫QSS,比CSS功能缺失一些。 QSS写的格式和CSS一样。

拖一个控件到界面上,右键修改样式表或者右边属性栏里styleSheet那里也可以修改样式表。

要查看可设置的属性,在Qt文档中搜索Qt Style Sheet。

代码实现夜间模式:

cpp 复制代码
// 拖一个Plain Text Edit
// 拖两个按钮, 分别用来切换日间和夜间模式

void Widget::on_pushButton_light_clicked()
{
    this->setStyleSheet("background-color: write;");
    ui->plainTextEdit->setStyleSheet("background-color: white; color: black;");
    ui->pushButton_light->setStyleSheet("color: black");
    ui->pushButton_dark->setStyleSheet("color: black");
}

void Widget::on_pushButton_dark_clicked()
{
    this->setStyleSheet("background-color: black;");
    ui->plainTextEdit->setStyleSheet("background-color: black; color: white;");
    ui->pushButton_light->setStyleSheet("color: white");
    ui->pushButton_dark->setStyleSheet("color: white");
}
cpp 复制代码
// 更具体的颜色可以这样设置
this->setStyleSheet("background-color: rgb(240, 240, 240);");

虽然这样也不够具体,但日常使用就可以了。

结束。

相关推荐
中科三方16 分钟前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
沫璃染墨1 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
蓝祁子yoky2 小时前
Qt学习日记 Day13:网络编程(一)-TCP基础与Socket实战
网络·qt·学习
小熊恋旧2 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合2 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J2 小时前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
架构师伯子明3 小时前
Ros 学习十三:IK Demo
学习
小羊没烦恼!3 小时前
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
java·服务器·网络·学习·负载均衡