1、QLabel
●显示文字,换行显示
QString str = QStringLiteral("测试的中文\n001xcj");
ui.label->setText(str);
●样式设置字体、颜色、背景色
●显示图片
qss:
3种
●播放gif动画
●界面创建,手动创建
QLabel播放gif动画
#include "qlabeltest.h"
#include <QMovie>
QLabelTest::QLabelTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
///******手动创建QLabel 播放gif动画********
QLabel *lab2 = new QLabel(this);//创建label
lab2->setGeometry(0, 0, 200, 200);//设置位置和大小
lab2->setStyleSheet("background-color:rgb(161, 220, 247);"); //设置样式表
QMovie *mov = new QMovie("test.gif");//创建QMovie
lab2->setMovie(mov);//放入label中
lab2->show(); //显示
mov->start(); //开始播放
}
可以不依赖于QWidget,独立显示
#include "qlabeltest.h"
#include <QtWidgets/QApplication>
#include <QMovie>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//直接写到这里即可,独立显示
QLabel *lab2 = new QLabel();
lab2->setGeometry(100, 100, 300, 300);
lab2->setStyleSheet("background-color:rgb(161, 220, 247);");
QMovie *mov = new QMovie("test.gif");
lab2->setMovie(mov);
lab2->show();
mov->start();
QLabelTest w;
w.show();
return a.exec();
}
QLabel富文本显示并处理链接点击和hover信号
QLabel setTextFormat
●PlainText, \n换行
●RichText, 支持html
ui生成的代码:
label_test->setTextFormat(Qt::RichText);
只有这个是不能响应事件的。还需要链接事件
QLabel链接事件
信号函数
●void linkActivated(const QString &link) //链接被点击
●void linkHovered(const QString &link) //鼠标移到上面
槽函数
public slots :
void Act(QString url)
{
qDebug() << "click" << url << endl;
}
void Hov(QString url)
{
qDebug() << "Hover" << url << endl;
}
void MainWindow::Hov(QString url)
{
qDebug() << ui->label_test->text();//可以打印内容
}
QLabel选择和编辑
●setTextInteractionFlags 设置参数
●selectedText 知道选择了什么文本
●setSelection
label_test->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard
|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextEditable
|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse);
void MainWindow::Hov()
{
qDebug() << ui->label_test->selectedText(); //打印选中的文本
}
void MainWindow::Hov()
{
ui->label_test->setSelection(2,5);//从第几个开始,选中几个
}
2、QPushButton
事件设置
QPushButton事件信号
基类的
●click()
●click(bool)是否选中
变成可选择之后,按一次状态改变一次True 和 False交替变化
●pressed() 按住
●released() 松开
快捷键设置
QPushButon快捷键设置组合键顺序按键激发信号
1.&+英文名字 ====》快捷键 Alt + 名字首字母
2.
//按钮快捷键设置
ui->shortButton->setShortcut(tr("X"));
ui->shortButton->setShortcut(tr("Ctrl+X"));
ui->shortButton->setShortcut(tr("Ctrl+X,A"));
样式设置
●背景色、字体及颜色
●背景图片FLAT
flat 平的
●圆角边框
●渐变圆角光泽按钮 & QPushButton通过qss实现鼠标悬停设置不同的渐变背景
//放上鼠标
QPushButton::hover{
background-color: qlineargradient(spread:reflect, x1:0.994, y1:0.511, x2:1, y2:0, stop:0.596591 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));
}
//不放鼠标
QPushButton::!hover{
background-color: qlineargradient(spread:reflect, x1:0.989, y1:0.499727, x2:1, y2:0.0113636, stop:0.244318 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));
}
3、QLineEdit
●setText设置文本
ui.lineEdit->setText("lineedit test");
ui.lineEdit->setPlaceholderText(QString::fromLocal8Bit("提示输入"));
●text() 获取文本
●setPlaceholderText设置 提示文字
●setClearButton Enabled
●setReadOnly
●setMaxLength
重做和撤销
●undo()槽 撤销
●redo()槽 恢复
QLineEdit输入检验
●格式掩码
setInputMask("000.000.000.000;_");
●格式校验(整数、浮点数、正则表达式)
setInputMask("AAAAA;_");
QLineEdit信号
●editingFinished 按下回车、焦点移开
●returnPressed 格式有效
●textChanged setText() 也激发
●textEdited 手动修改才会激发
QValidator
QIntValidator *ival = new QIntValidator();
ival-> setRange(10, 100000000);
ui.iedit- > setValidator(ival);
QDoubleValidator *dval = new QDoubleValidator();
dval-> setRange(10, 100000000);
dval-> setDecimals(3);//精度
ui.dedit- > setValidator(dval);
QDoubleValidator *dval = new QDoubleValidator();
dval->setRange(-100, 10000,3);
//不用科学计数法
dval->setNotation(QDoubleValidator::StandardNotation);
ui.dedit->setValidator(dval);
QRegExpValidator
//验证邮箱 xcxj123@x123.com
QRegExp exp("[a-zA-Z0-9-_]+@ [a-zA-Z0-9-_]+\\.[a-zA-Z]+");
QRegExpValidator *rval = new QRegExpValidator(exp);
ui.email->setValidator(rval);
可以校验:
ui.label->setText(ui.email->text());
//格式不正确提示
const QValidator *v = ui.email->validator();
int pos = 0;
/*
返回
enum State {
Invalid, 不正确
Intermediate, 中间没输入结束 111@113.
Acceptable 格式正确
};*/
if (v->validate(ui.email->text(), pos) != QValidator::Acceptable)
{
ui.label->setText(QString::fromLocal8Bit("邮箱格式不正确!"));
}
QLineEdit的qss样式设置
QLineEdit设置显示模式(密码)
●Normal, NoEcho, Password, PasswordEchoOnEdit 模式
●setEchoMode(QLineEdit::Normal);
QLineEdit{
border:3px dotted rgba(255,0,0,150);
border-radius:10px;
}
QLineEdit样式表-特殊符号编码
QLineEdit[echoMode="2"]{
lineedit-password-charactor:9738
}
.