Qt实现对话框

Qt打开单个文件

#include <QDir>
#include <QFileDialog>
    QString curPath=QDir::currentPath();  //初始化目录
    QString dlgTitle = "选择一个文件";  //对话框标题
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";       //文件过滤器
    QString aFileName = QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);  //getOpenFileName返回选择文件的带路径的完整文件名
    if(!aFileName.isEmpty())   //添加文件名称到文本框
        ui->listWidget->addItem(aFileName);

Qt使用QFile对文件进行读写和保存

读写

#include <QDir>
#include <QFileDialog>
void MainWindow::on_actOpen_IODevice_triggered()
{
   QString curPath = QDir::currentPath();
    QString dlgTitle = "打开一个文件";
    QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    QString aFileName = QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
    if(aFileName.isEmpty())
        return;
    openTextByIODevice(aFileName);
}
bool MainWindow::openTextByIODevice(const QString &aFileName)
{
    QFile aFile(aFileName);
    if(!aFile.exists())   //文件不存在
        return false;
    if(!aFile.open(QIODevice::ReadOnly|QIODevice::Text))
        return false;
    ui->textEditDevice->setPlainText(aFile.readAll());         //plain text editor
    aFile.close();
    ui->tabWidget->setCurrentIndex(0);  //设置选中tabWidget
    return true;
}

在这里插入图片描述
保存
注意:这里的保存代码和读写在一起。将读写的文件保存起来。

#include <QDir>
#include <QFileDialog>
void MainWindow::on_actSave_IODevice_triggered()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "另存为一个文件";
    QString filter =  "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    QString aFileName = QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
    if(aFileName.isEmpty())
        return;
    saveTextByIODevice(aFileName);
}

bool MainWindow::saveTextByIODevice(const QString &aFileName)
{
    QFile aFile(aFileName);
    if(!aFile.open(QIODevice::WriteOnly|QIODevice::Text))
        return false;
    QString str=ui->textEditDevice->toPlainText();  //整个内容作为字符串
    QByteArray strBytes = str.toUtf8();  //转换为字符数组
    aFile.write(strBytes,strBytes.length());
    aFile.close();
    ui->tabWidget->setCurrentIndex(0);
    return true;

}

在这里插入图片描述

Qt使用QStream对文件进行读写和保存

读写

#include <QDir>
#include <QFileDialog>
#include <QTextStream>
void MainWindow::on_actionQTextStream_triggered()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "打开一个文件";
    QString filter = "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    QString aFileName = QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
    if(aFileName.isEmpty())
        return;
    openTextByStream(aFileName);
}
//读写全部
bool MainWindow::openTextByStream(const QString &aFileName)
{
    QFile aFile(aFileName);
    if(!aFile.exists())   //文件不存在
        return false;
    if(!aFile.open(QIODevice::ReadOnly|QIODevice::Text))
        return false;
    QTextStream aStream(&aFile);
    aStream.setAutoDetectUnicode(true);  //自动检测Unicode,才能显示汉字;
    ui->textEditStream->setPlainText(aStream.readAll());
    aFile.close();//关闭文件
    ui->tabWidget->setCurrentIndex(1);
    return true;
}
//按行读写
bool MainWindow::openTextByStream(const QString &aFileName)
{
    QFile aFile(aFileName);
    if(!aFile.exists())   //文件不存在
        return false;
    if(!aFile.open(QIODevice::ReadOnly|QIODevice::Text))
        return false;
    QTextStream aStream(&aFile);
    aStream.setAutoDetectUnicode(true);  //自动检测Unicode,才能显示汉字;
    while(!aStream.atEnd())
    {
        QString str = aStream.readLine();//读取文件的一行文本
        ui->textEditStream->appendPlainText(str);
    }
    aFile.close();//关闭文件
    ui->tabWidget->setCurrentIndex(1);
    return true;
}

在这里插入图片描述

#include <QDir>
#include <QFileDialog>
#include <QTextStream>

保存

void MainWindow::on_actionQTextStream_2_triggered()
{
    QString curPath = QDir::currentPath();
    QString dlgTitle = "另存为一个文件";
    QString filter =  "程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";
    QString aFileName = QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
    if(aFileName.isEmpty())
        return;
    saveTaextByStream(aFileName);
}

bool MainWindow::saveTaextByStream(const QString &aFileName)
{
    QFile aFile(aFileName);
    if(!aFile.open(QIODevice::WriteOnly|QIODevice::Text))
        return false;
    QTextStream aStream(&aFile);  //用文本流读取文件
    aStream.setAutoDetectUnicode(true);
    QString str=ui->textEditStream->toPlainText();
    aStream<<str;  //写入文本流;
    aFile.close(); //关闭文件
    return true;
}

解决中文读取乱码问题

main()函数设置

#include "mainwindow.h"
#include <QApplication>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QTextCodec *codec=QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(codec);           
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

Qt打开多个文件

#include <QDir>
#include <QFileDialog>
 QString curPath=QDir::currentPath();  //初始化目录
    QString dlgTitle="选择多个文件";   //对话框标题
    QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";   //文件过滤器
    QStringList fileList = QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);  //getOpenFileNames返回选择文件的带路径的完整文件名
    for(int i=0;i<fileList.count();i++)   //添加文件名到文本框
        ui->listWidget->addItem(fileList.at(i));

Qt打开已有目录

#include <QDir>
#include <QFileDialog>
  QString curPath = QCoreApplication::applicationDirPath();
    QString dlgTitle="选择一个目录";
    QString selectedDir=QFileDialog::getExistingDirectory(this,dlgTitle,curPath,QFileDialog::ShowDirsOnly);
    if(!selectedDir.isEmpty())
        ui->listWidget->addItem(selectedDir);

Qt选择保存文件名

#include <QDir>
#include <QFileDialog>
  QString curPath = QCoreApplication::applicationDirPath();
    QString dlgTitle = "保存文件";
     QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)";   //文件过滤器
     QString aFileName = QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
     if(!aFileName.isEmpty())
         ui->listWidget->addItem(aFileName);

Qt打开颜色框并为文本框设置颜色

#include <QColorDialog>
  QPalette pal = ui->listWidget->palette();  //获取现有palette
    qDebug()<<pal;
    QColor iniColor = pal.color(QPalette::Text);  //现有的文字颜色
    QColor color = QColorDialog::getColor(iniColor,this,"选择颜色");
    if(color.isValid())
    {
        pal.setColor(QPalette::Text,color);
        ui->listWidget->setPalette(pal);
        ui->listWidget->addItem("设置颜色成功");
    }

Qt实现字符串对话框

#include <QLineEdit>
#include <QInputDialog>
 QString dlgTitle = "输入文字对话框";
    QString txtLabel = "请输入文件名";
    QString defaultInput="新建文件.txt";
    QLineEdit::EchoMode echoMode = QLineEdit::Normal;//QLineEdit::EchoMode echoMode = QLineEdit::Password密码模式;
    bool ok = false;
    QString text = QInputDialog::getText(this,dlgTitle,txtLabel,echoMode,defaultInput,&ok);
    if(ok&&!text.isEmpty())
        ui->listWidget->addItem(text);

实现效果
在这里插入图片描述

Qt实现整数对话框

#include <QInputDialog>
 QString dlgTitle = "输入整数对话框";
    QString txtLabel="设置字体大小";
    int defaultValue = ui->listWidget->font().pointSize();
    int minValue = 6,maxValue=50,setpValue=1;
    bool ok = false;
    int inputValue = QInputDialog::getInt(this,dlgTitle,txtLabel,defaultValue,minValue,maxValue,setpValue,&ok);
    if(ok)
    {
        QFont font =ui->listWidget->font();
        font.setPointSize(inputValue);
        ui->listWidget->setFont(font);
        
    }

实现效果
在这里插入图片描述

Qt实现浮点数对话框

#include <QInputDialog>
   QString dlgTitle = "输入浮点数对话框";
    QString txtLabel = "输入一个浮点数";
    float defaultValue = 3.13;
    float minValue = 0,maxValue = 10000;
    int decimals=2;
    bool ok =false;
    float inputValue = QInputDialog::getDouble(this,dlgTitle,txtLabel,defaultValue,minValue,maxValue,decimals,&ok);
    if(ok)
    {
        QString str = QString::asprintf("输入了一个浮点数:%.2f",inputValue);
        ui->listWidget->addItem(str);
    }

实现效果
在这里插入图片描述

Qt实现下拉列表选择输入

#include <QInputDialog>
 QStringList items;
    items <<"优秀"<<"良好"<<"合格"<<"不合格";
    QString dlgTitle ="条目选择对话框";
    QString txtLabel = "请选择级别";
    int curIndex= 0;
    bool editable = true; //ComboBox是否可编辑;
    bool ok =false;
    QString text = QInputDialog::getItem(this,dlgTitle,txtLabel,items,curIndex,editable,&ok);
    if(ok && !text.isEmpty()){
        ui->listWidget->addItem(text);
}

实现效果
在这里插入图片描述

Qt实现消息对话框

#include <QMessageBox>
  QString dlgTitle = "information消息框";
  QString strInfo = "文件已经打开,字体大小已经设置";
  QMessageBox::information(this,dlgTitle,strInfo,QMessageBox::Ok,QMessageBox::NoButton);

在这里插入图片描述

Qt实现消息警示框

#include <QMessageBox>
 QString dlgTitle = "warning消息框";
 QString strInfo = "文件内容已经被修改";
 QMessageBox::warning(this,dlgTitle,strInfo);

在这里插入图片描述

Qt实现about关于框

#include <QMessageBox>
    QString dlgTitle = "about消息框";
    QString strInfo = "开发数据查看软件V1.0";
    QMessageBox::about(this,dlgTitle,strInfo);
}

在这里插入图片描述

Qt实现Question选择框

#include <QMessageBox>
QString dlgTitle = "Question消息框";
    QString strInfo = "文件已经被修改,是否修改保存";
    QMessageBox::StandardButton defaultBtn = QMessageBox::NoButton;
    QMessageBox::StandardButton result;
    result = QMessageBox::question(this,dlgTitle,strInfo,QMessageBox::Yes|QMessageBox::No |QMessageBox::Cancel,defaultBtn);
    if(result==QMessageBox::Yes)
        ui->listWidget->addItem("Question消息框:Yes被选择");
    else if(result==QMessageBox::No)
        ui->listWidget->addItem("Question消息框:NO被选择");
    else if(result ==QMessageBox::Cancel)
        ui->listWidget->addItem("Question消息框:Cancel被选择");
    else
        ui->listWidget->addItem("Question消息框:无选择");

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值