关于QT常用的函数和方法记录(个人学习)
1、数据类型的转换
//QByteArray 转QSting
QByteArray bytes;
QSting str = QString::fromUtf8(bytes);
QString str = QString::fromLocal8Bit(bytes);
//QSting 转 QByteArray
QSting str;
QByteArray bytes = str.toUtf8();
//将Qstring类型转换成char
qDebug("本地IP:%s",qPrintable(a));
//将Qstring类型转换成char *
QString str = "time:" + str0;
QByteArray ba = str.toLatin1();
char *ptr = ba.data();
//char* 转 QString
char* c_char = "world";
QString qstr = QString(QLatin1String(c_char));
//qstring转int
QString str = "123";
int number = str.toInt();
//int 转 QString
int num = 79;
QString qnum = QString::number(num); //默认为十进制转换,其他进制转换需显示指定
QString qhex = QString::number(num,16).toUpper(); //十六进制大写 qhex = 4F
//* 转 QString
QString qstr = QString("%1%2").arg(num).arg(str);
//QString与QDateTime之间的转换
QString strtime;
QDateTime time;
time = QDateTime::currentDateTime(); //要包含头文件
trtime = time.toString("yyyy-MM-dd hh:mm:ss");
/*QString转quint)*/
QString Port_str = "8000";
quint Port_num;
Port_num=quint(Port_str.toUint());
/*quint转QString*/
quint Port_num = 8000;
QString IP_str;
IP_str = QString::number(IP_num);
//QByteArray 转换为 char *
char *ch;//不要定义成ch[n];
QByteArray byte;
ch = byte.data();
//char * 转换为 QByteArray
char *ch;
QByteArray byte;
byte = QByteArray(ch);
//QString转十六进制
QString hexstr = "0xFF"
bool ok;
int hexnum = hexstr.toInt(&ok,16); // 表示以16进制方式读取字符串
//QString转QStringList
QString str = "name1,,name2,name3";
QStringList list1 = str.split(",");
//QStringList转QString
list<< "name1" << "name2" << "name3";
QString str = list.join(",");
2、QByteArray数据类型的一些常用方法
QByteArray .prepend(); // 添加前缀
QByteArray. append(); //添加后缀
QByteArray.data(); //返回指向字节数组中存储的数据的指针,访问时采用ba.data()[0]
QByteArray::fill(char ch, int size = -1); //将字节数组中的每个字节设置为字符ch。如果size与-1(默认值)不同,则字节数组将预先调整为大小。
QByteArray::indexOf(ba, int from = 0); //指定位置
QByteArray::left(int len); //取左边len个字节
QByteArray::right(int len); //取右边len个字节
QByteArray::toHex();
QByteArray::toStdString();
3、函数用法记录
//打印可执行文件的当前路径
qDebug("%s",qPrintable(QApplication::applicationDirPath()));
//信号与槽 简单槽函数不用定义直接执行的用法·
connect(tcpSocket,&QTcpSocket::connected,[=](){qDebug()<<"成功和服务器建立好连接";});
//QPlainTextEdit、QTextEdit、QLineEdit部件文字获取
QString str = ui->lineEdit_server_send->text();
int num_1 = ui->lineEdit->text().toInt();
//QPlainTextEdit 多行简单文本框用 toPlainText();QTextEdit 富文本框,简单文本用toPlainText(), 富文本用 toHtml().QLineEdit 用 text().
//防止UI界面卡死使用函数
QApplication::processEvents();
//简单弹窗实现
QMessageBox::information(NULL, "提示", "发送成功",QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
4、常用功能实现
1、登录界面跳转实现
#include "dialog.h"
#include "accharge.h"
#include "dialog_tips.h"
#include "mainwindow.h"
#include <QApplication>
extern int chage_type;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
AcCharge accharge;
Dialog_Tips tips;
MainWindow abs;
accharge.show();
return a.exec(); // 程序正常运行
if(w.exec()==QDialog::Accepted){ // 判断dialog执行结果
if(chage_type == 1)
accharge.show(); // 如果是按下了“进入主界面”按钮,则显示主界面
else
tips.show();
return a.exec(); // 程序正常运行
}
else return 0; // 否则,退出程序
}
2、打开.bin文件的方法实现
void AcCharge::on_pushButton_14_clicked()//打开升级文件
{
fileName = QFileDialog::getOpenFileName(this,QStringLiteral("打开文件"),".",tr("csv files(*.bin)"));
if(fileName == "")
{
return;
}
qDebug() << "打开文件 :" + fileName;
ui->label_5->setText(fileName); //界面显示文件名称
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly)) //打开文件读
{
qDebug()<<QStringLiteral("请正确选择.bin文件,或者文件被占用");
ui->label_tips->setText("请正确选择.bin文件,或者文件被占用");
ui->label_5->setText("打开失败");
return;
}
else
{
Data.clear();
Data=file.readAll();
qDebug()<<"文件大小:"<<Data.size();
ui->progressBar->setRange(0,(Data.size()/pack_size +1));//设置进度条 最大值最小值
file.close();
}
}
3、保存到.txt文件的方法
void AcCharge::on_pushButton_12_clicked()//接收保存
{
QString csvFileName = QFileDialog::getSaveFileName(this, QStringLiteral("保存文件设置"), ".", "txt files(*.txt)");
QFile file(csvFileName);
if(!file.exists())
{
file.open(QIODevice::WriteOnly);
QTextStream csvOutPut(&file);
QString datamag = ui->textEdit_port_recv->toPlainText();
csvOutPut << datamag.toUtf8();
qDebug()<< "文件已保存 ";
tips( "文件已保存a ");
file.close();
}
}