Qt快速入门第三版章节3.2.3标准对话框练习

来源:互联网 发布:淘宝联盟分享赚互刷 编辑:程序博客网 时间:2024/06/03 15:09
1.颜色对话框
代码中Qt::red在F1查看快捷键的截图显示:


使用QColorDialog类的静态函数来直接显示颜色对话框,其好处是不用创建对象,但是如果想要更灵活的设置,则可以先创建对象,然后进行各项设置


在设计模式中选择“颜色对话框”按钮鼠标右击按钮的clicked()单击信号槽。然后跳转到mywidget.cpp文件中进行相应的编辑,在后面实现其他的对话框中可重复此步骤中,可实现同样的效果。
在mywidget.cpp文件中添加
修改前:
voidMyWidget::on_pushButton_clicked()
{
QColorcolor =QColorDialog::getColor(Qt::red,this,tr("颜色对话框"),
QColorDialog::ShowAlphaChannel);
qDebug()<<"color:"<<color;
}

修改后:
voidMyWidget::on_pushButton_clicked()
{
QColorDialogdialog(Qt::red,this);
dialog.setOption(QColorDialog::ShowAlphaChannel);
dialog.exec();
QColorcolor =dialog.currentColor();
qDebug()<<"color:"<<color;
}
运行截图:

2文件对话框
在mywidget.cpp文件中添加
#include<QFileDialog>
voidMyWidget::on_pushButton_5_clicked()
{
QStringfileName =QFileDialog::getOpenFileName(this,tr("文件对话框"),"F:",tr("图片文件(*png*jpg);;文本文件(*txt)"));
qDebug()<<"fileName:"<<fileName;
}




3字体对话框
在mywidget.cpp文件中添加
#include<QFontDialog>
voidMyWidget::on_pushButton_2_clicked()
{
boolok;
QFontfont =QFontDialog::getFont(&ok,this);
if(ok)ui->pushButton_2->setFont(font);
elseqDebug()<<tr("没有选择字体");
}


4输入对话框
在mywidget.cpp文件中添加
#include<QInputDialog>
voidMyWidget::on_pushButton_6_clicked()
{
boolok;
QStringstring =QInputDialog::getText(this,tr("输入字符串对话框"),
tr("请输入用户名:"),QLineEdit::Normal,tr("admin"),&ok);
if(ok)qDebug()<<"string"<<string;
intvalue1 =QInputDialog::getInt(this,tr("输入对话框"),
tr("请输入-1000到1000之间的数值"),0.00,-1000,1000,2,&ok);
if(ok)qDebug()<<"value1:"<<value1;
doublevalue2 =QInputDialog::getDouble(this,tr("输入浮点数对话框"),
tr("请输入-1000到1000之间的数值"),0.00,-1000,1000,2,&ok);
if(ok)qDebug()<<"value2:"<<value2;
QStringListitems;
items<<tr("条目1")<<tr("条目2");
QStringitem =QInputDialog::getItem(this,tr("输入条目录对话框"),tr("请选择或输入一个条目"),items,0,true,&ok);
if(ok)qDebug()<<"item:"<<item;
}








5消息对话框
在mywidget.cpp文件中添加
#include<QMessageBox>
voidMyWidget::on_pushButton_3_clicked()
{
intret1 =QMessageBox::question(this,tr("问题对话框"),
tr("你了解Qt吗?"),QMessageBox::Yes,QMessageBox::No);
if(ret1== QMessageBox::Yes)qDebug()<<tr("问题1");
intret2 =QMessageBox::information(this,tr("提示对话框"),tr("这是Qt书籍!"),QMessageBox::Ok);
if(ret2== QMessageBox::Ok)qDebug()<<tr("提示");
intret3 =QMessageBox::warning(this,tr("警告对话框"),tr("不能提前结束"),QMessageBox::Abort);
if(ret3== QMessageBox::Abort)qDebug()<<tr("警告");
intret4 =QMessageBox::critical(this,tr("严重错误对话框"),
tr("发现一个扬中错误!现在要关闭所有文件!"),QMessageBox::YesAll);
if(ret4== QMessageBox::YesAll)qDebug()<<tr("错误");
QMessageBox::about(this,tr("关于对话框"),tr("yafeilinux致力于Qt及QtCreator的普及工作!"));
}










6进度对话框
在mywidget.cpp文件中添加
#include<QProgressDialog>
voidMyWidget::on_pushButton_7_clicked()
{
QProgressDialogdialog(tr("文件复制进度"),tr("取消"),0,50000,this);
dialog.setWindowTitle(tr("进度对话框"));
dialog.setWindowModality(Qt::WindowModal);
dialog.show();
for(inti= 0;i <50000;i++)
{
dialog.setValue(i);
QCoreApplication::processEvents();
if(dialog.wasCanceled())break;
}
dialog.setValue(50000);
qDebug()<<tr("复制结束");
}


7错误信息对话框
mywidget.h头文件中添加
#include<QErrorMessage>
下面的代码在书本上描述的有点狗血,让我这种智商捉急的人找了半天,所以直接截图显示。(建议参照源码编写即可)





voidMyWidget::on_pushButton_4_clicked()
{
errordlg->setWindowTitle(tr("错误信息对话框"));
errordlg->showMessage(tr("这里是出错信息"));
}

运行截图



8向导对话框:
mywidget.h头文件中添加
#include<QWizard>
在mywidget.h头文件中的MyWidget类中添加私有属性成员函数:
QWizardPage*createPage1();
QWizardPage*createPage2();
QWizardPage*createPage3();

在mywidget.cpp文件中添加
QWizardPage* MyWidget::createPage1()
{
QWizardPage*page =newQWizardPage;
page->setTitle(tr("介绍"));
returnpage;
}

QWizardPage* MyWidget::createPage2()
{
QWizardPage*page =newQWizardPage;
page->setTitle(tr("用户选择信息"));
returnpage;
}

QWizardPage* MyWidget::createPage3()
{
QWizardPage*page =newQWizardPage;
page->setTitle(tr("结束"));
returnpage;
}


voidMyWidget::on_pushButton_8_clicked()
{
QWizardwizard(this);
wizard.setWindowTitle(tr("向导对话框"));
wizard.addPage(createPage1());
wizard.addPage(createPage2());
wizard.addPage(createPage3());
wizard.exec();
}










以上就是对Qt标准对话框的练习,不足之处还请大家指导。

1 0