2021.1.19QT标准对话框

本文介绍了一个基于Qt的应用程序中如何实现文件选择、颜色选取、字体选择等对话框的操作。详细展示了如何利用Qt的QFileDialog进行单个及多个文件的选择、目录选择以及文件保存对话框的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标准对话框

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDir>
#include<QFileDialog>
#include<QCoreApplication>
#include<QColorDialog>
#include<QFontDialog>
#include<QInputDialog>
#include<QMessageBox>
#pragma execution_character_set("utf-8")//使用utf-8,解决中文乱码


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);


}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString curpath=QDir::currentPath();
    //#pragma execution_character_set("utf-8")之后使用QString::fromLocal8Bit会将中文变为乱码,二者选一计即可
    QString dlgtitle=QString::fromLocal8Bit("选择一个文件");
    QString filter=QString::fromLocal8Bit("文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)");
    QString afilename=QFileDialog::getOpenFileName(this,dlgtitle,curpath,filter);
    if(!afilename.isEmpty()){
        ui->plainTextEdit->appendPlainText(afilename);

    }
}

void MainWindow::on_pushButton_2_clicked()
{
    QString curpath=QDir::currentPath();
    QString dlgtitle=QString::fromLocal8Bit("打开多个文件");
    QString filer=QString::fromLocal8Bit("文本文件(*.txt);;图片文件(*.jpg *.gif);;所有文件(*.*)");
    QStringList afilename=QFileDialog::getOpenFileNames(this,dlgtitle,curpath,filer);
    for (int i =0;i<afilename.length();i++){
        ui->plainTextEdit->appendPlainText(afilename.at(i));

    }


}

void MainWindow::on_pushButton_3_clicked()
{
    QString curpath=QCoreApplication::applicationDirPath();
    QString curp2=QDir::currentPath();//目录地址不同
    QString dlgtitle=QString::fromLocal8Bit("选择一个目录");
    QString selecteddir=QFileDialog::getExistingDirectory(this,dlgtitle,curpath,QFileDialog::ShowDirsOnly);
    if (!selecteddir.isEmpty()){
        ui->plainTextEdit->appendPlainText(selecteddir);
    }

}

void MainWindow::on_pushButton_4_clicked()
{
    QString curpath=QCoreApplication::applicationDirPath();
    QString plgtitle=QString::fromLocal8Bit("保存文件");
    QString filter=QString::fromLocal8Bit("h文件(*.h);;c++文件(*.cpp);;所有文件(*.*)");
    QString sfilename=QFileDialog::getSaveFileName(this,plgtitle,curpath,filter);
    if(!sfilename.isEmpty()){
        ui->plainTextEdit->appendPlainText(sfilename);
    }

}

void MainWindow::on_pushButton_5_clicked()
{
    QPalette pal=ui->plainTextEdit->palette();
    QColor inicolor=pal.color(QPalette::Text);
    QColor color=QColorDialog::getColor(inicolor,this,QString::fromLocal8Bit("选择颜色"));
    if (color.isValid()){
        pal.setColor(QPalette::Text,color);
        ui->plainTextEdit->setPalette(pal);

    }


}

void MainWindow::on_pushButton_6_clicked()
{
    QFont inifont=ui->plainTextEdit->font();
    bool ok=false;//通过bool值判断有效性,
    QFont font=QFontDialog::getFont(&ok,inifont,this,QString::fromLocal8Bit("请选择字体"));
    if (ok){
        ui->plainTextEdit->setFont(font);
    }

}

void MainWindow::on_pushButton_7_clicked()
{
    QString dlgtitle=QString::fromLocal8Bit("输入文字对话框");
    QString txtlabel=QString::fromLocal8Bit("请输入文件名");
    QString defaultinput=QString::fromLocal8Bit("text1.txt");
    bool ok=false;
    QString text=QInputDialog::getText(this,dlgtitle,txtlabel,QLineEdit::Normal,defaultinput,&ok);
    if(ok && !text.isEmpty()){
        ui->plainTextEdit->appendPlainText(text);
    }


}

void MainWindow::on_pushButton_8_clicked()
{
    QString dlgtitle=QString::fromLocal8Bit("输入整数对话框");
    QString textlabel=QString::fromLocal8Bit("设置字体大小");
    int defaultvalue=ui->plainTextEdit->font().pointSize();
    int minvalue=6,maxvalue=50,stepvalue=1;
    bool ok=false;
    int inputvalue=QInputDialog::getInt(this,dlgtitle,textlabel,defaultvalue,minvalue,maxvalue,stepvalue,&ok);
    if (ok){
        QFont font=ui->plainTextEdit->font();
        font.setPointSize(inputvalue);
        ui->plainTextEdit->setFont(font);

    }


}

void MainWindow::on_pushButton_9_clicked()
{
    QString dlgtitle=QString::fromLocal8Bit("输入浮点数对话框");
    QString floatlabel=QString::fromLocal8Bit("输入一个浮点数");
    float defaultvalue=3.13;
    float minvalue=-100,maxvalue=100000;
    int decimals=2;
    bool ok=false;
    float inputvalue=QInputDialog::getDouble(this,dlgtitle,floatlabel,defaultvalue,minvalue,maxvalue,decimals,&ok);
    if (ok){
        QString str0=QString::fromLocal8Bit("输入一个浮点数:");
        QString str=QString::asprintf("%s %.2f",str0.toUtf8().data(),inputvalue);
        ui->plainTextEdit->appendPlainText(str);

    }
}

void MainWindow::on_pushButton_10_clicked()
{
    QString dlgtitle="条目选择对话框";
    QString textlabel="请选择级别";
    QStringList items;
    items<<"优秀"<<"良好"<<"合格"<<"不合格";
    int defaultitem=0;
    bool editable=true;
    bool ok=false;
    QString text=QInputDialog::getItem(this,dlgtitle,textlabel,items,defaultitem,editable,&ok);
    if(ok&& !text.isEmpty()){
        ui->plainTextEdit->appendPlainText(text);
    }

}

void MainWindow::on_pushButton_11_clicked()
{
    QString dlgtitle="消息对话框";
    QString strinfo="文件已经打开,字体大小已经设置";
    QMessageBox::information(this,dlgtitle,strinfo,QMessageBox::Ok,QMessageBox::NoButton);


}

void MainWindow::on_pushButton_13_clicked()
{
    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->plainTextEdit->appendPlainText("question 消息框:yes 被选择");}
    else if (result==QMessageBox::No) { ui->plainTextEdit->appendPlainText("question 消息框:no 被选择");}
    else if (result==QMessageBox::Cancel) { ui->plainTextEdit->appendPlainText("question 消息框:cancel 被选择");}
    else{ui->plainTextEdit->appendPlainText("question 消息框:无选择");}
}


void MainWindow::on_pushButton_12_clicked()
{
    ui->plainTextEdit->clear();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值