QT开发详解之对话框应用详解控件使用(二)

对话框应用介绍

        QT对话框主要有 QFileDialog(文件对话框),QcolorDialog(颜色对话框),QFontDialog
(字体对话框),QinputDialog(输入对话框),QMessageBox(消息框)。

        

1,QFileDialog 对话框

若要打开一个文件,可调用静态函数 QFileDialog::getOpenFileName() 可以打开一个或多个文件

//打开一个文件
QString TestDialog::OpenOneFile()
{ //选择单个文件
    QString curPath=QDir::currentPath();//获取系统当前目录
    //获取应用程序的路径
    QString dlgTitle="选择一个文件"; //对话框标题
    QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
    QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
    

    reruen aFileName;
}

//选择打开多个文件
QStringList  TestDialog::OpenMuliteFile()
{ 
//获取应用程序的路径
    QString curPath=QDir::currentPath();//获取系统当前目录
    QString dlgTitle="选择多个文件"; //对话框标题
    QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
    QStringList fileList=QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);
    return fileList;
}

QFileDialog::getExistingDirectory() 选择打开一个已经存在的目录,getExistingDirectory() 函数的返回值是选择的目录名称字符串。

QFileDialog::ShowDirsOnly()若需要传递对话框标题和初始路径,还应传递一个选项,一般用 QFileDialog::ShowDirsOnly,表示对话框中只显示目录。

 QFileDialog::getSaveFileName()  获取保存文件名称对话框,若选择的是一个己经存在的文件,会提示是否覆盖原有的文件。如果提示覆盖,会返回为选择的文件,但是并不会对文件进行实质操作,对文件的删除操作需要在选择文件之后自己编码实现。

QString TestDialog::getSaveFileName()
{//保存文件
    QString curPath=QCoreApplication::applicationDirPath(); //获取应用程序的路径
    QString dlgTitle="保存文件"; //对话框标题
    QString filter="文本文件(*.txt);;h文件(*.h);;C++文件(.cpp);;所有文件(*.*)"; //文件过滤器
    QString aFileName=QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
    return aFileName;
}

2, QColorDialog 对话框

 选择颜色使用静态函数 QColorDialog::getColor()可以获取选择的颜色

QColor TestDialog::getColor
{
    QPalette pal=ui->plainTextEdit->palette(); //获取现有 palette
    QColor  iniColor=pal.color(QPalette::Text); //现有的文字颜色
    QColor color=QColorDialog::getColor(iniColor,this,"选择颜色");
    return color;
}

3, QFontDialog 对话框

QFontDialog 是选择字体对话框,选择字体使用静态函数 QFontDialog::getFont()。它为文本框选择字体,字体设置的内容包括字体名称、大小、粗体、斜体等。

QFont  TestDialog::getFont()
{//选择字体
    QFont iniFont=ui->plainTextEdit->font(); //获取文本框的字体
    bool   ok=false;
    QFont font=QFontDialog::getFont(&ok,iniFont); //选择字体
    return font;
}

4,QInputDialog标准输入对话框

QInputDialog 有单行字符串输入,列表框选择输入和多行文本等多种输入方式代码如下

//根据编辑框输QLineEdit入获取输入字符串
QString TestDialog::GetInputStringForQLineEdit
{ //输入字符串
    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);
    return text;
}

//根据下拉框ComboBox选择文本
void TestDialog::GetInputStringForComboBox
{ //条目选择输入
    QStringList items; //ComboBox 列表的内容
    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);
    return text;
}

5,QMessageBox 消息对话框

消息对话框 QMessageBox 用于显示提示、警告、错误等信息,或进行确认选择,由几个静态函数实现这些功能(详见表 1)。其中 warning()、information()、critical() 和 about() 这几个函数的输入参数和使用方法相同,对于 warning()、information()、critical() 和 about() 这几种对话框,它们一般只有一个 OK 按钮,且无须关心对话框的返回值。所以,使用缺省的按钮设置即可。

void TestDialog::MsgInformation
{
    QString dlgTitle="information消息框";
    QString strInfo="我是消息对话框";
   QMessageBox::information(this, dlgTitle, strInfo,
                              QMessageBox::Ok,QMessageBox::NoButton);
}

void TestDialog::btnMsgWarning
{
    QString dlgTitle="warning 消息框";
    QString strInfo="文件内容被修改";
    QMessageBox::warning(this, dlgTitle, strInfo);
}
void TestDialog::CriticalMessbox
{
    QString dlgTitle="critical消息框";
    QString strInfo="什么情况";
    QMessageBox::critical(this, dlgTitle, strInfo);
}
void TestDialog::MsgAbout
{
    QString dlgTitle="about消息框";
    QString strInfo="关于测试";
    QMessageBox::about(this, dlgTitle, strInfo);
}

QString TestDialog::MsgQuestion()
{
   // question对话框的关键是在其中可以选择显示多个按钮,例如同时显示 Yes、No、OK 或 //Cancel() 其返回结果也是一个 StandardButton 类型变量,表示哪个按钮被单击了。
    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)
        dlgTitle = ("Question消息框: Yes 被选择");
    else if(result==QMessageBox::No)
        dlgTitle = ("Question消息框: No 被选择");
    else if(result==QMessageBox::Cancel)
        dlgTitle = ("Question消息框: Cancel 被选择");
    else
        dlgTitle = ("Question消息框: 无选择");

    return dlgTitle ;
}

 

你可能感兴趣的:(QT小项目开发整理)