merlinzjl

导航

day03 QT学习 常用控件 QLabel QPushButton QLineEdit使用 QSS介绍以及QObject子对象的遍历

一、QLabel继承自QWidget

 

QLabel有两个格式可以选择,分别是PlainText和RichText

富文本支持HTML语言,即你设置QLabel的文本为HTML,QLabel能够解析。

 

我们可以使用QLabel来显示图,可以使用pixmap或者qss设置

 

使用QLabel和QMovie来播放GIF动画

    QMovie *pmov = new QMovie(":/QLabelTest/Resources/timg.gif");

    ui.label_2->setMovie(pmov);

    pmov->start();

 

使用富文本显示并处理链接点击

选中label之后,右键改变多信息文本,选中你的链接地址,然后插入。

QLabel提供了两个信号用于处理 鼠标点击和移动。

void linkActivated(const QString &link)

void linkHovered(const QString &link)

 

QLabel的选择和编辑 setTextInteractionFlags

 

二、QPushButton

快捷键设置

setShortcut/setShortcut(tr(“Alt+F7”))

第一种方法,直接在button的名字前面加上一个&符号,这样你就可以使用alt+button名的首字母来调用。

第二种方法,使用代码设置。

ui->shortpushButton->setShortcut(tr("Ctrl+X,A"));

 

QPushButton样式设置

flat属性设置是否凹凸。

 

使用QSS, 设置圆角按钮

QPushButton{

border-radius:10px;

color: rgb(255, 255, 255);

}

QPushButton::!hover{

background-color: qlineargradient(spread:reflect, x1:1, y1:0.522, x2:1, y2:0, stop:0.0945274 rgba(0, 0, 0, 255), stop:0.970149 rgba(255, 255, 255, 255));

}

QPushButton::hover{

background-color: qlineargradient(spread:reflect, x1:1, y1:0.54, x2:1, y2:0, stop:0.19403 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));

}

注意花括号的使用

 

三、QLineEdit

PlaceHolderText:显示提示输入信息。

clearButtonEnabled:有清空内容的按钮。

提供了undo和redo的槽函数。

 

输入验证:

格式掩码:适合固定长度,比如ip地址。

setInputMask(“000.000.000.000;_”)

函数参数的掩码具体怎么设置参考手册,分号前是设置掩码,分号后是表示没有输入时的符号表示。显示效果如下:

 

格式校验:包括整数、浮点数、正则表达式。

使用QValidator

QIntValidator *ival = new QIntValidator();

ival->setRange(10,1000);

ui.iedit->setValidator(ival);

QDoubleValidator *dval = new QDoubleValidator();

dval ->setRange(10,1000);

dval->setDecimals(3);//设置精度

//不用科学计数法

dval->setNotation(QDoubleValidator::StandardNotation);

ui.iedit->setValidator(dval);

 

使用QRegExpValidator

QRegExp rx(“正则表达式”);

QRegExpValidator *pReg = new QRegExpValidator(rx,this);

ui.email->setValidator(pReg);

 

通过对应控件的Validator()获得QValidator对象,根据这个对象进行判断。

const QValidator * pQv = ui.email->validator();

int pos = 0;//出错的位置

pQv->validate(ui.email->text(), pos) 判断即可。

 

QLineEdit信号

editingFinshed 按下回车、焦点移开触发

returnPressed按下回车、焦点移开触发且格式有效

textChanged setText()都能激发。

 

QLineEdit QSS的样式设置

QLine设置显示模式(密码),设置echoMode 为password即可。

QSS的设置可以查询 Qt助手,在Qt助手搜索 Qt Style Sheet即可。如下代码通过QSS更改了QLineEdit的密码模式输入的字符以及边框还有圆角。

 

 

 

遍历所有QObject的子节点

只有继承自QObject的类才可以遍历所有的QObject子节点。通过当前QObject对象可以获得对象名;通过QMetaObject对象可以获得当前对象的类名。

    const QObjectList cs = this->children();

    for(int i = 0; i<cs.size(); i++)

    {

        qDebug() << cs[i]->objectName();

        const QMetaObject *mobj = cs[i]->metaObject();

        QString strclassname = mobj->className();

    }

posted on 2019-08-22 23:23  merlinzjl  阅读(1352)  评论(0编辑  收藏  举报