嵌入式图形界面实验二

一木 566 views 0

实验二Qt常见对话框

实验目标

  • 掌握常见对话框的使用
  • 掌握信号与槽机制
  • 掌握常用控件的使用

实验内容

  • 【实验3-1】常见对话框的调用
  • 【实验3-2】多窗口程序的编写

【实验3-1】常见对话框的调用

知识点回顾

  • Qt常用控件,Qt常见对话框

功能描述

分别展示Qt常见对话框—颜色对话框,文件对话框,输入对话框,错误提示对话框,字体对话框,消息对话,进度条对话框。

实验步骤

一、颜色对话框

1.新建Qt项目,项目名称为MyDialog,类名为dialog,基类为QDialog。

2.完成项目创建后,向项目中添加颜色对话框按钮。完成后添加按钮的槽函数ShowColorDlg链接。关键代码如下:

【代码3-1】 mydialog.cpp

QPushButton * colorbutton= new QPushButton("显示颜色对话框",this);

colorbutton->setDefault(true);

colorbutton->setGeometry(12,0,100,56);

connect(colorbutton,SIGNAL(clicked(bool)),this,SLOT(ShowColorDlg()));

3.实现槽函数ShowColorDlg,完成颜色对话框的展示,代码如下:

【代码3-2】 ShowColorDlg

Dialog::ShowColorDlg()

{

//颜色对话框

QColorDialog * colorDlg = new QColorDialog;

//colorDlg->setModal(true);

colorDlg->show();

return 1;

}

其中setModal函数是用来设置窗口模态化的,show是用来显示对话框。

运行程序,点击显示颜色对话框按钮,结果如图3- 1所示:

图3- 1 颜色对话框

二、文件对话框

1.在上面项目中添加文件对话框按钮。完成后添加按钮的槽函数ShowFileDlg链接。关键代码如代码3-3所示:

【代码3-3 mydialog.cpp

QPushButton * filebutton= new QPushButton("显示文件对话框",this);

filebutton->setDefault(true);

filebutton->setGeometry(12,60,100,50);    connect(filebutton,SIGNAL(clicked(bool)),this,SLOT(ShowFileDlg()));

2.实现槽函数ShowFileDlg,完成文件对话框的展示,代码如代码3-4所示:

【代码3-4】 ShowFileDlg

Dialog::ShowFileDlg()

{

QFileDialog * fileDlg = new QFileDialog(this,"filedlg");

if(fileDlg->exec()==QFileDialog::Accepted)

{

QStringList name = fileDlg->selectedFiles();

QMessageBox::information(this, tr("提示"), name[0]);

}

return 1;

}

其中使用exec来显示对话框,一旦对话框关闭,则获取返回值判断选择的选项,然后再获取锁选择的文件列表,存放到QStringList类型的变量name中去。点击显示文件对话框按钮,结果如下图3- 2所示:

图3- 2 文件对话框

三、输入对话框

1.在上面项目中添加输入对话框按钮。完成后添加按钮的槽函数ShowInputDlg。关键代码如下:

【代码3-5 mydialog.cpp

QPushButton * inputbutton= new QPushButton("显示输入对话框",this);

inputbutton->setDefault(true);

inputbutton->setGeometry(12,120,100,56);

connect(inputbutton,SIGNAL(clicked(bool)),this,SLOT(ShowInputDlg()));

2.实现槽函数ShowInputDlg,完成输入对话框的展示,代码如下:

【代码3-6 ShowInputDlg

Dialog::ShowInputDlg()

{

boolisok;

QStringname=QInputDialog::getText(this,tr("user name"),

tr("PLEASE input new name"),QLineEdit::Normal,tr("正文"),&isok);

if(isok&&!name.isEmpty())

{

QStringstr= "OK";

QMessageBox::information(this,tr("提示"),name);

}

return 1;

}

这里我们使用QInputDialog类中的getText函数来显示对话框,然后将输入对话框中的内容通过消息对话框输出出来,点击输入对话框按钮,具体运行结果如下图3- 3所示:

 

图3- 3 输入对话框

四、错误对话框

1.在上面项目中添加错误对话框按钮。完成后添加按钮的槽函数ShowErrorDlg。关键代码如下:

【代码3-7 mydialog.cpp

QPushButton * errorbutton= new QPushButton("显示错误对话框",this);

errorbutton->setDefault(true);

errorbutton->setGeometry(12,180,100,56);

connect(errorbutton,SIGNAL(clicked(bool)),this,SLOT(ShowErrorDlg()));

2.实现槽函数ShowErrorDlg,完成错误对话框的展示,代码如下:

【代码3-8】 ShowErrorDlg

Dialog::ShowErrorDlg()

{

QErrorMessage * errorDlg=new QErrorMessage;

errorDlg->setWindowTitle(QString("错误提示"));

errorDlg->showMessage(QString("内存泄漏"));

errorDlg->show();

return 1;

}

点击错误对话框按钮,具体运行结果如下图3- 4所示:

图3- 4 错误对话框

五、字体对话框

1.在上面项目中添加字体对话框按钮。完成后添加按钮的槽函数ShowFontDlg。关键代码如下:

【代码3-9 mydialog.cpp

QPushButton * fontbutton= new QPushButton("显示字体对话框",this);

fontbutton->setDefault(true);

fontbutton->setGeometry(12,240,100,56);

connect(fontbutton,SIGNAL(clicked(bool)),this,SLOT(ShowFontDlg()));

2.实现槽函数ShowFontDlg,完成字体对话框的展示,代码如下:

【代码3-10 ShowFontDlg

Dialog::ShowFontDlg()

{

bool ok;

QFontDialog::getFont(&ok, QFont( "Helvetica [Cronyx]", 10 ), this );

return 1;

}

点击字体对话框按钮,具体运行结果如下图3- 5所示:

图3- 5 字体对话框

六、消息对话框

1.在上面项目中添加消息对话框按钮。完成后添加按钮的槽函数ShowMsgDlg。关键代码如下:

【代码3-11 mydialog.cpp

QPushButton * msgbutton= new QPushButton("显示消息对话框",this);

msgbutton->setDefault(true);

msgbutton->setGeometry(12,300,100,56);

connect(msgbutton,SIGNAL(clicked(bool)),this,SLOT(ShowMsgDlg()));

2.实现槽函数ShowMsgDlg,完成消息对话框的展示,代码如下:

【代码3-12 ShowMsgDlg

Dialog::ShowMsgDlg()

{

int ret = QMessageBox::information(this,QString("问题对话框"),QString("这是Qt!"),QMessageBox::Ok);

if(ret == QMessageBox::Ok)

{

QStringstr = "OK";

QMessageBox::information(this, tr("提示"), str);

}

return 1;

}

点击消息对话框按钮,具体运行结果如下图3- 6所示:

图3- 6 消息对话框

七、进度条对话框

1.在上面项目中添加进度条对话框按钮。完成后添加按钮的槽函数ShowProcessDlg。关键代码如下:

【代码3-13 mydialog.cpp

QPushButton * processbutton= new QPushButton("显示进度对话框",this);

processbutton->setDefault(true);

processbutton->setGeometry(12,360,100,56);

connect(processbutton,SIGNAL(clicked(bool)),this,SLOT(ShowProcessDlg()));

2.实现槽函数ShowProcessDlg,完成进度条对话框的展示,代码如下:

【代码3-14】 ShowProcessDlg

Dialog::ShowProcessDlg()

{

QProgressDialogproDlg(QString("文件复制进度"),QString("取消"),0,50000,this);

proDlg.setWindowTitle(QString("进度对话框"));

proDlg.setWindowModality(Qt::WindowModal);//将对话框设置为模态

proDlg.show();

for(int i=0; i<50000; i++)

{   //演示复制进度

proDlg.setValue(i);    //进度条的值

QCoreApplication::processEvents(); //避免界面冻结

if (proDlg.wasCanceled()) break; //按下取消按钮就中断

}

proDlg.setValue(50000);

return 1;

}

点击进度条对话框按钮,具体运行结果如下图3- 7所示:

图3- 7 进度条对话框

实验现象

运行程序后分别点击各个对话框按钮,则对应的打开各自的对话框。

 

实验现象及成果物

 

 

链接:https://pan.baidu.com/s/1MYnvaHlWDHIbO-kosKdEsw
提取码:82t3
复制这段内容后打开百度网盘手机App,操作更方便哦

 

 

 

打赏
发表评论 取消回复
表情 图片 链接 代码

分享
微信
微博
QQ