| 对话框 | 常用静态函数名称 | 函数功能 |
|---|---|---|
|
QFileDialog 文件对话框 |
QString getOpenFileName() QStringList getOpenFileNames() QString getSaveFileName() QString getExistingDirectory() QUrl getOpenFileUrl() |
选择打开一个文件 选择打开多个文件 选择保存一个文件 选择一个己有的目录 选择打幵一个文件,可选择远程网络文件 |
|
QcolorDialog 颜色对话框 |
QColor getColor() | 选择颜色 |
|
QFontDialog 字体对话框 |
QFont getFont() | 选择字体 |
|
QinputDialog 输入对话框 |
QString getText() int getlnt() double getDouble() QString getltem() QString getMultiLineText() |
输入单行文字 输入整数 输入浮点数 从一个下拉列表框中选择输入 输入多行字符串 |
|
QMessageBox 消息框 |
StandardButton information() StandardButton question() StandardButton waming() StandardButton critical() void about() void aboutQt() | 信息提示对话框 询问并获取是否确认的对话框 警告信息提示对话框 错误信息提示对话框 设置自定义信息的关于对话框 关于Qt的对话框 |
void Dialog::on_btnOpen_clicked()
{ //选择单个文件
QString curPath=QDir::currentPath();//获取系统当前目录
//获取应用程序的路径
QString dlgTitle="选择一个文件"; //对话框标题
QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
QString aFileName=QFileDialog::getOpenFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
ui->plainTextEdit->appendPlainText(aFileName);
}
QFileDialog::getOpenFileName() 函数需要传递 3 个字符串型参数,分别如下:
QString f ilter="文本文件.txt);;图片文件(* .jpg *.gif *.png);;所有文件(*.*)";
每组文件之间用两个分号隔开,同一组内不同后缀之间用空格隔开。
void Dialog::on_btnOpenMulti_clicked()
{ //选择多个文件
//获取应用程序的路径
QString curPath=QDir::currentPath();//获取系统当前目录
QString dlgTitle="选择多个文件"; //对话框标题
QString filter="文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; //文件过滤器
QStringList fileList=QFileDialog::getOpenFileNames(this,dlgTitle,curPath,filter);
for (int i=0; i<fileList.count();i++)
ui->plainTextEdit->appendPlainText(fileList.at(i));
}
getOpenFileNames() 函数的传递参数与 getOpenFileName() —样,只是返回值是一个字符串列表,列表的每一行是选择的一个文件。
void Dialog::on_btnSave_clicked()
{//保存文件
QString curPath=QCoreApplication::applicationDirPath(); //获取应用程序的路径
QString dlgTitle="保存文件"; //对话框标题
QString filter="文本文件(*.txt);;h文件(*.h);;C++文件(.cpp);;所有文件(*.*)"; //文件过滤器
QString aFileName=QFileDialog::getSaveFileName(this,dlgTitle,curPath,filter);
if (!aFileName.isEmpty())
ui->plainTextEdit->appendPlainText(aFileName);
}
void Dialog::on_btnColor_clicked()
{
QPalette pal=ui->plainTextEdit->palette(); //获取现有 palette
QColor iniColor=pal.color(QPalette::Text); //现有的文字颜色
QColor color=QColorDialog::getColor(iniColor,this,"选择颜色");
if (color.isValid()) //选择有效
{
pal.setColor(QPalette::Text,color); //palette 设置选择的颜色
ui->plainTextEdit->setPalette(pal); //设置 palette
}
}
getColor() 函数需要传递一个初始的颜色,这里是将palette提取的文本颜色作为初始颜色。getColor() 函数返回一个颜色变量,若在颜色对话框里取消选择,则返回的颜色值无效,通过 QColor::isValid() 函数来判断返回是否有效。
void Dialog::on_btnFont_clicked()
{//选择字体
QFont iniFont=ui->plainTextEdit->font(); //获取文本框的字体
bool ok=false;
QFont font=QFontDialog::getFont(&ok,iniFont); //选择字体
if (ok) //选择有效
ui->plainTextEdit->setFont(font);
}
gctFont() 返回一个字体变量,但是 QFont 没有类似于 isValid() 的函数来判断有效性,所以在调用 getFont() 函数时以引用方式传递一个逻辑变量 ok,调用后通过判断 ok 是否为 true 来判断字体选择是否有效。
void Dialog::on_btnInputString_clicked()
{ //输入字符串
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->plainTextEdit->appendPlainText(text);
}
void Dialog::on_btnInputInt_clicked()
{//输入整数
QString dlgTitle="输入整数对话框";
QString txtLabel="设置字体大小";
int defaultValue=ui->plainTextEdit->font().pointSize(); //现有字体大小
int minValue=6, maxValue=50,stepValue=1; //范围,步长
bool ok=false;
int inputValue = QInputDialog::getInt(this, dlgTitle,txtLabel,
defaultValue, minValue,maxValue,stepValue,&ok);
if (ok) //是否确认输入
{
QFont font=ui->plainTextEdit->font();
font.setPointSize(inputValue);
ui->plainTextEdit->setFont(font);
}
}
输入整数对话框使用一个 SpinBox 组件输入整数,getInt() 需要传递的参数包括数值大小范围、步长、初始值,确认选择输入后,将输入的整数值作为文本框字体的大小。
void Dialog::on_btnInputFloat_clicked()
{ //输入浮点数
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->plainTextEdit->appendPlainText(str);
}
}
void Dialog::on_btnInputItem_clicked()
{ //条目选择输入
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);
if (ok && !text.isEmpty())
ui->plainTextEdit->appendPlainText(text);
}
getItem() 函数需要一个 QStringList 变量为其 ComboBox 组件做条目初始化,curIndex 指明初始选择项,editable 表示对话框里的ComboBox是否可编辑,若不能编辑,则只能在下拉列表中选择。StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)
其中,parent 是对话框的父窗口,指定父窗口之后,打开对话框时,对话框将自动显示在父窗口的上方中间位置;title 是对话框标题字符串;text 是对话框需要显7K的信息字符串;buttons 是对话框提供的按钮,缺省只有一个 OK 按钮;defaultButton 是缺省选择的按钮,缺省表示没有选择。详见 Qt 帮助文档中的StandardButton 类型的说明。
对于 warning()、information()、critical() 和 about() 这几种对话框,它们一般只有一个 OK 按钮,且无须关心对话框的返回值。所以,使用缺省的按钮设置即可。
void Dialog::on_btnMsgInformation_clicked()
{
QString dlgTitle="information消息框";
QString strInfo="文件已经打开,字体大小已设置";
QMessageBox::information(this, dlgTitle, strInfo,
QMessageBox::Ok,QMessageBox::NoButton);
}
void Dialog::on_btnMsgWarning_clicked()
{
QString dlgTitle="warning 消息框";
QString strInfo="文件内容已经被修改";
QMessageBox::warning(this, dlgTitle, strInfo);
}
void Dialog::on_btnMsgCritical_clicked()
{
QString dlgTitle="critical消息框";
QString strInfo="有不明程序访问网络";
QMessageBox::critical(this, dlgTitle, strInfo);
}
void Dialog::on_btnMsgAbout_clicked()
{
QString dlgTitle="about消息框";
QString strInfo="我开发的数据查看软件 V1.0 \n 保留所有版权";
QMessageBox::about(this, dlgTitle, strInfo);
}
StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = StandardButtons( Yes | No ), StandardButton defaultButton = NoButton)
question() 对话框的关键是在其中可以选择显示多个按钮,例如同时显示 Yes、No、OK 或 Cancel() 其返回结果也是一个 StandardButton 类型变量,表示哪个按钮被单击了。
void Dialog::on_btnMsgQuestion_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消息框: 无选择");
}
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有