QT Label QPushButton QLineEdit 控件 学习笔记

首先我们来了解一下Label的一些属性

属性含义
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类内,有些是通过继承父类得到的:

成员方法功能
hide()隐藏文本框

clear()

清空QLabel控件内所有显示的内容。
setToolTip(QString)设置信息提示,当用户的鼠标放在QLabel文本框上时会自动跳出文字。
setToolTipDuration(int)设置提示信息出现的时间,单位是毫秒。硕
setStyleSheet(QString)设置QLabel文本框的样式。

这里主要说明一下

设置标签中的字体大小 颜色

 lab.setStyleSheet("QLabel{front:20;color:red;}");

设置标签上显示的内容(开始时显示百度  点一下标签显示网址)
 lab.setText("<a href=\"www.baidu.com\">百度");

鼠标悬停在标签上1s  显示"点击显示url";
 lab.setToolTip("点击显示url");
 lab.setToolTipDuration(1000);//悬停1s

点击标签  显示网址
 QObject::connect(&lab,&QLabel::linkActivated,&lab,&QLabel::setText);

接下来我们了解一下QPushButton的属性

属性含义
text保存按钮上要显示的文字。该属性的值可以通过text()方法获取,也可以通过setText(const QString &text)方法修改。
icon保存按钮左侧要显示的图标。该属性的值可以通过icon()方法获取,也可以通过setlcon(const Qlcon &icon)方法修改。
iconsize保存按钮左侧图标的尺寸。该属性的值可以通过iconSize()方法获取,也可以通过setlconSize(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)方法修改。

他的信号和槽

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

这里我们实现了 通过控件信号之间的传递

QObject::connect(&but,&QPushButton::clicked,&lab,&QLabel::clear);
点击点击文字消失  百度消失
  


通过控件信号之间的传递
按文字消失按钮  去除文字按钮被点击   百度标签消失
QObject::connect(&but1,&QPushButton::clicked,&but,&QPushButton::clicked);
 

接下来  在介绍一下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()方法获取,也可以通过
frame控制输入框的边框。默认情况下,输入框是带有边框的。该属性的值可以通过hasFrame()方法获取,也可以通过setFrame(bool)方法修改
成员方法功能
move(int x, int y)指定输入框位于父窗口中的位置。
setValidator(const QValidator *v)限制输入框中的文本内容,比如输入框只包含整数。
setReadOnly(bool)设置输入框是否进入只读状态。在只读状态下,用户仍可以采用粘贴、拖拽的方式向输入框中放置文本,但无法进行编辑。
setAlignent(Qt::Alignment flag)设置输入框中输入文本的位置。
信号函数功能
textEdited(const QString &text)当用户编辑输入框中的文本时,此信号就会触发,text参数即为用户新编辑的文本。注意,当程序中试图通过setText()方法修改输入框中的文本时,不会触发此信号函数。
textChanged(const QString&text)只要输入框中的文本内容发生变化,就会触发此信息。
returnPressed()用户按下回车键时,会触发此信号。
editingFinished()用户按下回车键,或者鼠标点击输入框外的其它位置时,会触发此信号。
槽函数功能
clear()清空文本框中的内容。
setText(const QString &)重新指定文本框中的内容。

完整代码如下

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include<QDialog>
#include <QApplication>
#include<QLabel>
#include<QPushButton>
#include<QLineEdit>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
//    //QDialog dia;
//    //dia.setModal(true);
//    // setModal函数 参数为true  dia被设置成模态 false  非模态

//    QLabel lab(&w);
//    //lab.setText("hello");


//    //lab.show();
//    lab.setGeometry(50,100,150,70);
//    lab.setStyleSheet("QLabel{front:20;color:red;}");
//    lab.setText("<a href=\"www.baidu.com\">百度");
//    lab.setToolTip("点击显示url");
//    lab.setToolTipDuration(1000);
//    QObject::connect(&lab,&QLabel::linkActivated,&lab,&QLabel::setText);
//    //dia.show();
//    //dia.exec();
//    //模态用 exec


//    QPushButton but(&w);

//    //创建一个按钮 按钮上写着"文字消失"  按下这个按钮后  显示"去除文字"的按钮消失
//    QPushButton but1(&w);
//    but.setText("去除文字");
//    but.move(200,200);
//    but.setDisabled(true);//让按钮不能按
//    but.setEnabled(true);//让按钮能按
//    but1.setText("按钮消失");
//    //QObject::connect(&but1,&QPushButton::clicked,&but,&QPushButton::hide);
//    //点击去除文字  显示"去除文字"的按钮消失

//    QObject::connect(&but,&QPushButton::clicked,&lab,&QLabel::clear);
//    //点击文字消失  百度消失


//    //通过控件信号之间的传递
//    //按文字消失按钮  标签消失
//    QObject::connect(&but1,&QPushButton::clicked,&but,&QPushButton::clicked);

    QLineEdit le(&w);
    le.move(200,200);

    le.setPlaceholderText("请输入...");
    le.setClearButtonEnabled(true);
    le.setEchoMode(QLineEdit::Password);

    QLabel lab(&w);
    QObject::connect(&le,&QLineEdit::textChanged,&lab,&QLabel::setText);
    //lab.setText()

    w.show();
    return a.exec();
}
#include "widget.h"
#include "ui_widget.h"

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值