文章目录
一、QT文件读写
1、文件夹的创建
在软件文件夹中创建名为:name的文件夹
QString cur_dir_str = QDir::currentPath();//获取当前路径
QDir dir;//定义个文件夹对象
if (!dir.exists(cur_dir_str+"/name"))//如果某个文件夹路径不存在,创建文件夹路径,会生成新的文件夹
{
bool res = dir.mkpath(cur_dir_str+"/name");
}
2、.txt文件的写
dir.setCurrent(cur_dir_str+"/jilu");//设定当前路径
QFile file(cur_dir_str+"/jilu");//定义一个文件对象,传入当前路径
file.setFileName(QDateTime::currentDateTime().toString("yyyy-MM-dd hhmmss") + ".txt");//命名不能使用:符号,否则创建文件失败。
bool a = file.open(QIODevice::WriteOnly);//文件不存在会自动创建,有就会打开
file.write(tmp.toUtf8());//将数据转成utf-8格式的,然后保存到文件中
file.close();//关闭文件
dir.setCurrent(cur_dir_str); //设定工作路径
3、.bin文件的写
会删除文件内容
file.setFileName("main.bin");
file.open(QIODevice::WriteOnly|QIODevice::Truncate);//打开文件并会清空
file.write(op.toUtf8());
file.close();
4、文件的读
两种文件的操作方式相同,直接读操作就行了。
QString dirpath = QDir::currentPath();
QFile file(dirpath);
file.setFileName("main.bin");
file.open(QIODevice::ReadOnly);
QString pass = file.readAll();
file.close();
5.文件重命名
bool a = file.rename(newname+".txt");//重命名
二、样式表的编写
1. 修改控件颜色
QLabel{color:#ff8865}
2. 背景颜色/背景透明(整个界面的)
QWidget {background-color:white }
QWidget {background:transparent }
3. 按钮添加图片
QPushButton{border-image:url(:/res/log.png)}//适应按钮大小
4. 按钮按下抬起颜色变化/无边框
QPushButton{border:none;color:#ffba1a}
QPushButton:pressed{color:#ff8865}
5. QListWidget样式表
QListWidget::item:selected{background-color:#ff8865}//选中后颜色
QListWidget::item:hover{background-color:#ffba1a}//鼠标放上颜色
三、功能模块
1. 读取文件夹中文件,筛选.txt文件,筛选文件
- number->QString类型的转换
- QListWidget显示项目
QDir dir;
//获取文件夹下的文件名称,筛选.txt文件。
QStringList baseNames;
foreach (QFileInfo info, dir.entryList(QStringList()<<"*.txt", QDir::NoDotAndDotDot | QDir::Files))
{
baseNames.append(info.baseName());
}
ui->zongshulabel->setText(QString::number(baseNames.size()));
ui->listWidget->addItems(baseNames);
ui->curshulabel->setText(QString::number(ui->listWidget->currentRow()+1));
ui->listWidget->setCurrentRow(-1);//初始化页面为-1,防止误删。
对所需要文件进行筛选
foreach (QFileInfo info, dir.entryList(QStringList() << "*.txt", QDir::NoDotAndDotDot | QDir::Files))
{
//on_lineEdit_textChanged(const QString &arg1)
if(info.baseName().contains(arg1))//名字中包含arg1->QString的
baseNames.append(info.baseName());
}
2. 实时显示电脑时间
QDateTime UTC(QDateTime::currentDateTimeUtc());
QDateTime local(UTC.toLocalTime());
ui->ctimelable->setText(local.toString("yyyy-MM-dd hh:mm:ss"));
3. FileDialog对象界面的使用,弹出当前大小的框
NewFileDialog *filedialog = new NewFileDialog(this);//这个类和头文件有关
filedialog->resize(this->size());
filedialog->show();
filedialog->setModal(true);
filedialog->exec();
QString tmp = filedialog->getTextEdit();//一个方法
delete filedialog;
4. 方法的定义与调用
- 在类里面定义公开方法,并完善方法内容
- 在当前头文件中,定义类的头文件,并+class 类
- 定义一个对象,通过对象调用方法
- 用完释放
5. ListWidget的方法
- 添加项目—— addItem
- 删除项目——takeItem
- 向前插入项目 ——insertItem
6. QMessageBox的使用
QMessageBox *messagebox = new QMessageBox;
messagebox->setWindowTitle("提示");
messagebox->setText("是否确认删除?");
messagebox->setInformativeText(name);
QAbstractButton *querenbt = messagebox->addButton("确认",QMessageBox::ButtonRole(0));
QAbstractButton *quxiao = messagebox->addButton("取消",QMessageBox::ButtonRole(1));
messagebox->show();
messagebox->exec();//阻塞
if(messagebox->clickedButton() == querenbt)//点击了确认按钮
{
file.setFileName(name + ".txt");
file.remove();
showlist();
}
if(messagebox->clickedButton() == quxiao)
{
delete messagebox;
}