Qt 控件的使用-1

Qt QLabel文本框的使用

QLabel 是 Qt 帮我们写好的一个控件类,间接继承自 QWidget 类,它的继承关系如下:

QLabel -> QFrame -> QWidget

从字面上理解,QLabel 可以解释为“Qt 的 Label”,即 Qt 提供给我们的一种文本控件,它的基础功能是显示一串文本。例如,下图就是一个普通的文本框:

图 1 QLabel控件

除了显示一串文本外,QLabel 控件上还可以放置图片、超链接、动画等内容。例如:

图 2 QLabel放置图片和超链接文字

本质上,每个文本框都是 QLabel 类的一个实例对象。QLabel 类提供了两个构造函数,分别是:

QLabel(QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())
QLabel(const QString &text, QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags())

各个参数的含义分别是:

  • text 参数用于指定文本框中显示的文字;
  • parent 参数用于指定文本框的父窗口
  • WindowFlags 是一种枚举类型,f 参数用来设置文本框的一些系统属性和外观属性,默认值为 Qt::Widget,表示当不指定父窗口时,文本框将作为一个独立窗口(如图 1、2 所示),反之则作为父窗口中的一个控件。f 参数的可选值有很多,比如 Qt::Window 表示文本框将作为一个独立的窗口,它自带边框和标题栏,Qt::ToolTip 表示文本框将作为一个提示窗口,不带边框和标题栏等等,这里不再一一列举。

需要注意的是,第一个构造函数中的 parent 和 f 参数都有默认值,因此 QLabel 类还隐含了一个默认构造函数。也就是说,创建  QLable 对象时可以不传递任何参数,或者只给 txt 参数传递一个字符串,就可以成功创建一个文本框。通常情况下,我们会给 text 和 parent 参数传递相应的值,即在创建文本框的同时指定文本内容和父窗口。

QLabel文本框的使用

QLabel 类本身提供有很多属性和方法,它还从父类继承了很多属性和方法。下表给大家罗列了 QLabel 类常用的一些属性和方法:

表 1 QLabel 常用属性
属 性含 义
alignment保存 QLabel 控件中内容的对齐方式,默认情况下,QLabel 控件中的内容保持左对齐和垂直居中。
该属性的值可以通过调用 alignment() 方法获得,可以借助 setAlignment() 方法修改。
text保存 QLabel 控件中的文本,如果 QLabel 控件中没有文本,则 text 的值为空字符串,
该属性的值可以通过 text() 方法获得,可以借助 setText() 方法修改。
pixmap保存 QLabel 控件内显示的图片,如果控件内没有设置图片,pixmap 的值为 0。
该属性的值可以通过调用 pixmap() 方法获得,可以借助 setPixmap() 方法修改。
selectedText保存 QLabel 控件中被选择了的文本,当没有文本被选择时,selectedText 的值为空字符串。
该属性的值可以通过调用 selectedText() 方法获得。
hasSelectedText判断用户是否选择了 QLabel 控件内的部分文本,如果是则返回 true,反之则返回 false。默认情况下,该属性的值为 false。
indent保存 QLabel 控件内文本的缩进量,文本的缩进方向和 alignment 属性的值有关。
该属性的值可以通过调用 indent() 方法获得,可以借助 setIndent() 方法修改。
margin保存 QLabel 控件中内容与边框之间的距离(边距),margin 的默认值为 0。
该属性的值可以通过调用 margin() 方法获得,可以借助 setMargin() 方法修改。
wordWrap保存 QLabel 控件内文本的换行策略。当该属性的值为 true 时,控件内的文本会在必要时自动换行。默认情况下,控件内的文本是禁止自动换行的。
该属性的值可以通过 wordWrap() 方法获得,可以借助 setWordWrap() 方法修改。

除了上表中提到了获取和修改属性值得成员方法外,下表给大家罗列了一些常用的操作 QLabel 控件的成员方法,它们有些定义在 QLabel 类内,有些是通过继承父类得到的:

表 2 操作QLabel的常用方法
成员方法功 能
hide()隐藏文本框。
clear()清空 QLabel 控件内所有显示的内容。
setToolTip(QString)设置信息提示,当用户的鼠标放在QLabel 文本框上时会自动跳出文字。 
setToolTipDuration(int)设置提示信息出现的时间,单位是毫秒。 
setStyleSheet(QString)设置 QLabel 文本框的样式。
setGeometry(int x, int y, int w, int h)设置 QLabel 文本框的位置 (x, y) 以及尺寸 (w, h)。

QLabel文本框的信号和槽

QLabel 控件只用来显示文本、图像等内容,很好与用户交互。但是,当 QLabel 控件内包含超链接内容时,可以使用 QLabel 类提供的两个信号函数:

表 2 QLabel信号函数
信号函数功 能
linkActivated(const QString &link)用户点击超链接时触发,link 参数用于向槽函数传输超链接的 URL。
linkHovered(const QString &link)用户的鼠标悬停到超链接位置时触发,link 参数用于向槽函数传输超链接的 URL。

QLabel 控件提供了很多槽函数,如下表所示:

表 3 QLabel槽函数
槽函数功 能
clear()清空 QLabel 控件内所有的内容。
setMovie(QMovie *movie)清空 QLabel 控件内所有的内容,改为显示指定的 movie 动画。
setNum(int num)清空 QLabel 控件内所有的内容,改为显示 num 整数的值。
setNum(double num)清空 QLabel 控件内所有的内容,改为显示 num 小数的值。
setPicture(const QPicture &picture)清空 QLabel 控件内所有的内容,改为显示经 QPicture 类处理的图像。
setPixmap(const QPixmap &)清空 QLabel 控件内所有的内容,改为显示经 QPixmap 类处理的图像。
setText(const QString &)清空 QLabel 控件内所有的内容,改为显示指定的文本。

除了表 2、3 罗列的这些信号和槽函数外,QLabel 类还从父类处继承了一些信号和槽函数,这里不再一一罗列。

实例演示QLabel文本框的用法

接下来通过一个实例,给大家演示 QLabel 控件中一些属性和方法的用法。

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //创建一个文本框
    QLabel lab;
    //设置文本框内容居中显示
    lab.setAlignment(Qt::AlignCenter);
    //设置文本框的坐标和尺寸
    lab.setGeometry(100,100,400,400);
    //设置文本框的外观,包括字体的大小和颜色、按钮的背景色
    lab.setStyleSheet("QLabel{font:30px;color:red;background-color:rgb(f9,f9,f9);}");
    //设置文本框要显示超链接内容
    lab.setText("<a href=\"http://c.biancheng.net\">C语言中文网");
    //当用户鼠标位于文本框上时,显示提示内容
    lab.setToolTip("点击超链接显示URL");
    //提示内容显示 1 秒
    lab.setToolTipDuration(1000);
    //为文本框设置信号和槽,当用户点击超链接时,将文本框内容改为超链接的 URL
    QObject::connect(&lab,&QLabel::linkActivated,&lab,&QLabel::setText);
    //程序运行后,文本框显示
    lab.show();

    return a.exec();
}

执行结果如下图所示,用户最先看到的是图 3a),当用户鼠标移动到文本框区域内时,会提示“点击超链接显示URL”,提示时间为 1 秒。当用户点击“C语言中文网”时会触发 linkActivated() 信号函数,该函数会调用 setText() 函数,将文本框中显示的“C语言中文网”改为“http://c.biancheng.net”,字体颜色为红色,如图 3b) 所示。

图 3 程序运行结果

有关 QLabel 类提供的更多属性和方法,后续章节用到时会做详细地讲解,您也可以借助 Qt Creator 提供的 Qt 帮助手册自行查看 QLabel 类提供的成员。

Qt QPushButton按钮用法详解

按钮是 GUI 开发中最常用到的一种控件,作为一款著名的 GUI 开发框架,Qt 提供了很多种按钮,比如 QPushButton(普通按钮)、QRadioButton(单选按钮)、QToolButton(工具栏按钮)等。

QPushButton 是实际开发中最常使用的一种按钮,本节就给大家详细讲解它的用法。

QPushButton按钮的创建

QPushButton 类间接继承自 QWidget 类,它的继承关系如下:

QPushButton -> QAbstractButton -> QWidget

QAbstractButton 类是所有按钮控件类的基类,包含很多通用的按钮功能。

QPushButton 类专门用来创建可按压的按钮,如图 1 所示。

图 1 QPushButton 按钮

QPushButton 按钮上除了可以放置一串文本,文本左侧还可以放置图标,必要时还可以在按钮上放置图片。QPushButton 按钮可以作为一个独立的窗口,但实际开发中很少这样用,通常的用法是像图 1 这样将按钮内嵌到某个窗口中,作为一个子控件和其它控件搭配使用。

QPushButton 类提供了 3 个构造函数,分别是:

QPushButton(QWidget *parent = Q_NULLPTR)
QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)

parent 参数用于指定父窗口;text 参数用于设置按钮上要显示的文字;icon 参数用于设置按钮上要显示的图标。

注意,第一个构造函数的 parent 参数附有默认值,所以 QPushButton 类还隐含着一个默认构造函数。也就是说,实例化 QPushButton 类对象时可以不传递任何参数。

QPushButton按钮的使用

QPushButton 类提供了很多实用的属性和方法,它还从父类继承了很多属性和方法。下表给大家罗列了一些比较常用的属性和方法:

表 1 QPushButton常用属性
属 性含 义
text保存按钮上要显示的文字。
该属性的值可以通过 text() 方法获取,也可以通过 setText(const QString &text) 方法修改。
icon保存按钮左侧要显示的图标。
该属性的值可以通过 icon() 方法获取,也可以通过 setIcon(const QIcon &icon) 方法修改。
iconsize保存按钮左侧图标的尺寸。
该属性的值可以通过 iconSize() 方法获取,也可以通过 setIconSize(const QSize &size) 方法修改。
size保存按钮的尺寸。
该属性的值可以通过 size() 方法获取,也可以通过 resize(int w, int h) 或者 resize(const QSize &) 方法修改。
font保存按钮上文字的字体和大小。
该属性的值可以通过 font() 方法获取,也可以通过 setFont(const QFont &) 方法修改。
flat初始状态下,按钮是否显示边框。flat 属性的默认值为 flase,表示按钮带有边框。
该属性的值可以通过 isFlat() 方法获取,也可以通过 setFlat(bool) 方法修改。
enabled指定按钮是否可以被按下。
该属性的默认值为 true,表示按钮可以被按下,即按钮处于启用状态。当该属性的值为 false 时,按钮将不能被点击,按钮处于禁用状态。
该属性的值可以通过 isEnabled() 方法获取,也可以通过 setEnabled(bool) 方法进行修改。
autoDefault当用户按下 Enter 回车键时,是否触发点击按钮的事件。
当按钮的父窗口为 QDialog 窗口时,该属性的值为 true;其它情况下,该属性的默认值为 false。
该属性的值可以通过 autoFault() 方法获取,也可以通过 setAutoFault(bool) 方法修改。

除了表 1 中罗列的获取、修改属性值的方法外,QPushButton 类常用的成员方法还有:

表 2 QPushButton常用方法
方 法功 能
move(int x, int y)手动指定按钮位于父窗口中的位置。
setStyleSheet(const QString &styleSheet)自定义按钮的样式,包括按钮上文字或图片的显示效果,按钮的形状等等。
setGeometry(int x, int y, int w, int h)同时指定按钮的尺寸和位置。
adjustSize()根据按钮上要显示的内容,自动调整按钮的大小。
setDisabled(bool disable)指定按钮是否可以被按下。当 disable 值为 true 时,表示按钮不能被按下,即禁用按钮的功能。

QPushButton按钮的信号和槽

GUI 程序中,按钮的主要任务是完成和用户之间的交互,下表罗列了 QPushButton 类常用的信号函数和槽函数:

表 3 QPushButton信号和槽
信号函数功 能
clicked()
clicked(bool checked = false)
用户点击按钮并释放(或者按下按钮对应的快捷键)后,触发此信号。
pressed()用户按下按钮时会触发此信号。
released()用户松开按钮时会触发此信号。
槽函数功 能
click()单击指定的按钮。
setIconSize()重新设置按钮上图片的尺寸。
hide()隐藏按钮控件。
setMenu(QMenu *menu)弹出与按钮关联的菜单。

实例演示QPushButton按钮用法

接下来通过一个实例,给大家演示 QPushButton 按钮的用法:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget widget;
    //设置 widget 窗口的标题
    widget.setWindowTitle("QWidget窗口");
    //创建一个按钮,并内嵌到 widget 窗口中
    QPushButton but("QPushButton按钮",&widget);
    //按钮的位置位于距 widget 窗口左上角 (100,100) 的位置
    but.move(100,100);
    //设置按钮上文字的大小。
    but.setStyleSheet("QPushButton{font:20px;}");
    //调整按钮的尺寸
    but.resize(200,200);
    //建立信息和槽,当用户点击并释放按钮后,该按钮隐藏。
    QObject::connect(&but,&QPushButton::clicked,&but,&QPushButton::hide);

    widget.show();
    return a.exec();
}

将程序复制到 main.cpp 文件中,运行结果为:

图 2 运行结果

Qt QLineEdit单行输入框用法详解

QLineEdit 是 Qt 提供的一个控件类,它直接继承自 QWdiget 类,专门用来创建单行输入框,如下图所示:

图 1 单行文本输入框

实际开发中,我们经常用到 QLineEdit 输入框,比如接收用户输入的个人信息、账户信息、角色名称等,就可以用 QLineEdit 实现。

QLineEdit单行输入框的创建

每个单行输入框都是 QLineEdit 类的一个实例对象,QLineEdit 类提供有两个构造函数,分别是:

QLineEdit(QWidget *parent = Q_NULLPTR)
QLineEdit(const QString &contents, QWidget *parent = Q_NULLPTR)

contents 参数用于指定输入框中的文本内容;parent 参数用于指定新建输入框控件的父窗口,新建输入框将会内嵌到父窗口上,作为父窗口的一个子控件。当然,我们也可以不指定父窗口,那么新建的输入框就会作为独立的窗口。

在 QLineEdit 输入框中,用户可以直接输入一行文本,也可以粘贴一行文本,还可以修改输入框内的文本。某些实际场景中,QLineEdit 输入框还可以对用户输入的内容加以限定,比如:

  • 限定文本的长度,例如用户最多可以输入 20 个字符;
  • 输入文本的格式,例如用户输入出生日期时,必须按照“yy-mm-dd”的格式输入;
  • 输入的文本内容,例如当前输入框仅允许用户输入数字,或者只允许用户输入英文字符。

QLineEdit单行输入框的使用

QLineEdit 类的内部提供了很多实用的属性和方法,同时还从 QWidget 父类处继承了一些属性和方法。
下表列出了 QLineEdit 类对象经常调用的一些属性以及它们各自的含义:

表 1 QLineEdit常用属性
属 性含 义
text保存输入框中的文本。
该属性的值可以通过 text() 方法获取,也可以通过 setText(const QString &) 方法修改。

maxLength
设置输入框中最多可以放置的文本长度。当文本长度超出最大限度后,超出部分将被丢弃。
默认情况下,maxLength 的值为 32767。该属性的值可以通过 maxLength() 函数获得,也可以通过 setMaxLength(int) 方法修改。

placeholderText 
设置提示信息,例如当用户未选中输入框时,输入框中显示“请输入...”,而用户选中输入框时,"请输入..." 随之消失。
该属性的值可以通过 placeholderText() 方法获取,也可以通过 setPlaceholderText(const QString &) 方法修改。

clearButtonEnabled
当输入框中有文本时,输入框的右侧可以显示一个“一键清除”按钮。该属性的默认值为 false,即输入框中不会自动显示清除按钮。
该属性的值可以通过 isClearButtonEnabled() 方法获取,也可以通过 setClearButtonEnabled(bool enable) 方法修改。
echoMode设定输入框中文本的显示样式,该属性的可选值有以下几个:
  • QLineEdit::Normal:正常显示所输入的字符,此为默认选项。
  • QLineEdit::NoEcho:不显示任何输入的字符,常用于密码类型的输入,且长度保密
  • QLineEdit::Password:显示与平台相关的密码掩饰字符,而不是实际输入的字符。当用户重新点击输入框时,可以紧接着之前的文本继续输入。
  • QLineEdit::PasswordEchoOnEdit:编辑时正常显示输入的字符,编辑完成后改为用密码掩饰字符显示。当用户重新点击输入框时,不能紧接着之前的文本继续输入。
该属性的是可以通过 echoMode() 方法获取,也可以通过 setEchoMode(EchoMode) 方法修改。
frame控制输入框的边框。默认情况下,输入框是带有边框的。
该属性的值可以通过 hasFrame() 方法获取,也可以通过 setFrame(bool) 方法修改。

除了上表提到的获取和修改属性值的方法外,QLineEdit 类还提供了一些功能实用的方法,例如:

表 2 QLineEdit常用方法
成员方法功 能
move(int x, int y)指定输入框位于父窗口中的位置。
setValidator(const QValidator *v)限制输入框中的文本内容,比如输入框只包含整数。
setReadOnly(bool)设置输入框是否进入只读状态。在只读状态下,用户仍可以采用粘贴、拖拽的方式向输入框中放置文本,但无法进行编辑。
setAlignent(Qt::Alignment flag)设置输入框中输入文本的位置。

QLineEdit单行输入框的信号和槽

QLineEdit 类提供了几个信号函数,分别对应用户的几种输入状态。

表 3 QLineEdit信号函数
信号函数功 能
textEdited(const QString &text)

当用户编辑输入框中的文本时,此信号就会触发,text 参数即为用户新编辑的文本。


注意,当程序中试图通过 setText() 方法修改输入框中的文本时,不会触发此信号函数。

textChanged(const QString &text)只要输入框中的文本内容发生变化,就会触发此信息。
returnPressed()用户按下回车键时,会触发此信号。
editingFinished()用户按下回车键,或者鼠标点击输入框外的其它位置时,会触发此信号。

QLineEdit 类常用的槽函数有以下几个:

表 4 QLineEdit槽函数
槽函数功 能
clear()清空文本框中的内容。
setText(const QString &)重新指定文本框中的内容。

QLineEdit单行输入框的用法示例

下面的实例给大家演示了 QLineEdit 单行输入框控件的基本用法,同时还演示了几个成员方法的用法。

#include <QApplication>
#include <QWidget>
#include <QLineEdit>

using namespace std;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //创建一个窗口,作为输入框的父窗口
    QWidget widget;
    //设置窗口的标题
    widget.setWindowTitle("QWidget窗口");
   
    //接下来,分别创建两个输入框,用于让用户分别输入账号和密码
    //创建账号输入框
    QLineEdit lineEdit(&widget);
    //指定输入框位于父窗口中的位置
    lineEdit.move(100,100);
    //设置提示信息
    lineEdit.setPlaceholderText("请输入账号...");
    //让输入框显示“一键清除”按钮
    lineEdit.setClearButtonEnabled(true);
   
    //创建密码输入框
    QLineEdit lineEditPass(&widget);
    lineEditPass.setPlaceholderText("请输入密码...");
    lineEditPass.move(100,150);
    //指定文本显示方式,保护用户账号安全
    lineEditPass.setEchoMode(QLineEdit::Password);
   
    //指定窗口的尺寸和显示文字的大小
    widget.resize(500,300);
    widget.setFont(QFont("宋体",16));

    widget.show();
    return a.exec();
}

运行结果为:

图 2 运行结果

转自:Qt QLineEdit单行输入框用法详解

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值