QT学习笔记

QT常用快捷键及接口

常用快捷键

//
注释: ctrl+/
运行:ctrl+r
构建:ctrl+b	
转到定义/声明:F2
返回:alt+←
前进:alt+

常用接口

//
设置窗口名称:setWindowTitle
重置窗口大小:resize
设置固定窗口大小:setFixSize
设置位置:move
设置父亲:setParent
设置文本:setText
设置字体:setFont
设置样式表属性:setStyleSheet
显示:show

信号和槽

它是观察者模式的一种简易方式,使用connect 函数可以为信号与槽建立好连接,当信号触发时,槽出现相应的处理。信号来自被观察者,槽来自观察者。

  • signal信号:函数声明,无需实现,系统大多数类都内置了信号,开发者也可以自定义信号。
  • slot槽:也是个函数,一般是类的成员函数,且有声明且有实现体,系统大多数类都内置了槽,开发者也可以自定义槽。

case 1 鼠标点击事件

//最大化按钮(被观察者-触发信号对象)
auto btnMax =new QPushButton("最大化",this);
//this 窗口(观察者-接收信号对象)
//建立信号 和 槽(处理信号函数)连接
connect(btnMax,&QPushButton::clicked,this,&QWidget::showMaximized);//connect(被观察者,信号,观察者,槽)

case 2 鼠标长按与松下事件

设置一个按钮,鼠标按下,打印“被打了”,鼠标抬起,打印“反抗了”

atuo btn=new QPushButton("老鼠",this);
//c++新Lamda表达式
//[可访问外部变量](参数列表)->返回值类型{函数体}
//[=](){} 值传递形式捕获所有外部变量,内部变量不能改变值
//[&](){} 引用形式捕获所有外部变量,可以改变实际变量值
[]()->void
{
	qDebug()<<"被打了!";
}();
connect(btn,&QPushButton::pressed,[](){
qDebug()<<"老鼠被打了";
});
connect(btn,&QPushButton::released,[](){
qDebug()<<"老鼠反抗了";
});


connect 函数

 1. connect(被观察者,信号,观察者,槽)//用法1
 2. connect(被观察者,信号,Lamda表达式)//用法2

自定义信号和槽

自定义槽:

1、有函数声明且有实现
2、返回值类型为void
3、槽函数可以带参,可以重载(槽函数实参来自信号函数)*

自定义信号:

1、写在signal;
2、只需声明,无需实现
3、返回值类型为void
4、支持带参,且能重载

// 自定义槽example:点击按钮,打印“boss死了”
关键字:explicit 修饰函数,无法自动转换类型
eg: BossDead();//boss 死亡槽函数
void Boss::BossDead()
{
qDebug<<"boss 死了";
}
//观察者 boss 处理函数:BossDead()
//被观察者 按钮  信号: 点击
//按钮点击 处理boss 死亡
auto btn=QPushButton("击杀"this);//被观察者
auto boss=new Boss();//观察者
connect(btn,&QPushButton::clicked,boss,&Boss::BossDead);//绑定信号
connect(btn,&QPushButton::clicked,[](){
});//Lamda表达式形式
 //自定义信号example: boss死亡信号广播后 触发 boss死亡槽函数
//具体分两步:点击按钮 触发 死亡信号广播; 死亡信号广播 触发 boss死亡槽函数
 signal://
 void DeadSignal();//自定义信号
 

自定义信号和槽特点:

1、一个信号可以被多个槽绑定;
2、同一个槽可以绑定多个信号;
3、信号和槽的函数参数表一一对应;
4、信号的参数表可以多于槽函数,反之,槽函数的参数列表不能多于信号函数的参数列表;
5、信号可以绑定信号;

disconnect();
eg:
connect(btn3,&QPushButton::clicked,mboss,deadsignal1);
    //解除绑定disconnect(btn3,&QPushButton::clicked,mboss,deadsignal1);

信号和槽解除绑定

常用控件

  1. 按钮控件: QPushButton
  2. 打印控件:QDebug
  3. 文本控件: QLabel
QLabel *label =new QLabel;
laber->setParent(this);
label->move(x,y);
label->setText("hello world");
label->setFont(QFont("楷体",20,10,1));//匿名对象
  1. 滑动条控件:QSlider
QSlider *slider =new QSlider;
slider->setParent(this);
slider->move(x,y);
slider->setValue(100);
slider->setFont(QFont("楷体",20,10,1));//匿名对象,字体大小20,加粗10,倾斜
  1. 进度条控件:QProgressBar
 QProgressBar * bar= new  QProgressBar;
 bar->setParent(this);
 bar->move(0,200);
 bar->resize(this->size());//设置进度条大小为窗口大小
 //bar->resize(this->size().width(),50);//设置进度条大小为窗口大小
 bar->setValue(0)
  1. 文本编辑框控件:QTextEdit
QTextEdit* edit = QTextEdit;
edit->move(0,100);
edit->resize(500,500);
edit->setParent(this);
edit->setFontUnderline(1);
edit->setFontPointSize(qreal(35.5));
edit->setText("hello world");

case 3 通过滑动条改变字体大小

connect(slider,QSlider::valueChanged,[label](int _value){
label->setFont(QFont("楷体“,_value,10,1)
label->resize(_value,_value);
});

case 4 通过滑动条改变进度条

connect(slider,Qlider::valueChanged,[bar](int _value){
bar->SetValue(_value);
});

case 5 通过编辑文本框改变Label文本内容

connect(edit,QTextEdit::textChanged,[label](){
QString text = edit->toPlainText();
label->setText(text);
});

文件操作与二进制文件

常用库

  1. QFile
  2. QIODevice
  3. QByteArray
  4. QFileDialog

文件读取

  • 选择文件
QString filename = QFileDialog::getOpenFileName();
  • 创建文件对象
QFile file(&filename);
  • 打开文件并读取文件
if(!file.open(QIODevice::ReadOnly)
	return;
QByteArray arr+ =file.readline()

  • 关闭文件
file.close()

文件修改并另存为

  • 新建文件
QString filename = QFileDialog::getSaveFileName(this,"另存为","C:/unname.docx")
  • 创建文件对象
QFile file(&filename);
  • 打开文件并修改(写)文件
if(!file.open(QIODevice::WriteOnly)
	return;
QString str = ui->textEdit->toPlainText();
file.write(str.toUtf8());//将QString转换为QByteArray
  • 关闭文件
file.close()

保存为二进制文件

  • 新建二进制文件
QString filename = QFileDialog :: getSaveFileName(this,"保存为二进制文件","C:/unname.bin","*.bin");
QString text = ui->textEdit->toPlainText();
  • 创建文件对象
QFile file(filename)
  • 创建数据流对象并写入文件
QDataStream fout(&file)//传入文件对象指针
fout << text;
  • 关闭文件
file.close();

读取二进制文件

  • 打开二进制文件
QString filename = QFileDialog :: getOpenFileName(this,"保存为二进制文件","C:/","*.bin");

  • 创建文件对象
QFile file(filename)
  • 创建数据流对象并读取
QDataStream fin(&file)//传入文件对象指针
QString text;
fin>>text;
QDebug() << text;
  • 关闭文件
file.close();

配置文件

#include <QSettings>
//在槽函数下添加下面代码:::

//1、创建配置文件
QSettings settingsFile("config.ini");
//2、保存设置到配置文件
settingsFile.SetValue("volume",value);

//在mainwindow 中添加:
//读取(加载)配置文件
QSettings setting("config.ini");
ui->verticalSilder->setValue(setting.value("volume").toInt())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值