网站备案在哪个网站,电脑学校,pc端和手机端网站建设,桥头东莞网站建设文章目录 前言一、颜色对话框颜色对话框代码解析 二、文本对话框文本对话框代码解析 三、输入对话框1.整型输入对话框2.浮点数输入对话框3.条目对话框 四、提示对话框1.提问对话框2.消息对话框3.警告对话框4.关键对话框 五、进度对话框六、向导对话框总结 前言
今天介绍几种标… 文章目录 前言一、颜色对话框颜色对话框代码解析 二、文本对话框文本对话框代码解析 三、输入对话框1.整型输入对话框2.浮点数输入对话框3.条目对话框 四、提示对话框1.提问对话框2.消息对话框3.警告对话框4.关键对话框 五、进度对话框六、向导对话框总结 前言
今天介绍几种标准对话框都是Qt封装好的我们先创建一个界面添加几个按钮然后分别在几个按钮的回调函数里添加创建不同对话框的逻辑 一、颜色对话框
void MainWindow::on_pushButton_clicked()
{QColorDialog colordlg(Qt::blue,this);//颜色 父本colordlg.setOption(QColorDialog::ShowAlphaChannel);colordlg.exec();//模态对话框 阻塞在这QColor colorcolordlg.currentColor();//返回当前颜色qDebug()color is colorQt::endl;
}颜色对话框代码解析
以上代码实现了函数部分 QColorDialog一个用于让用户选择颜色的对话框 setOption这是一个方法用于设置对话框的显示选项。 ShowAlphaChannel这是一个选项启用后会在对话框中显示透明度调节控件。 QColorDialog::setOption(QColorDialog::ShowAlphaChannel) 的作用是启用颜色对话框中的Alpha通道设置允许用户调整颜色的透明度。通过设置这个选项颜色对话框会显示一个滑块或其他控件让用户能够调节颜色的透明度级别。这对于需要精确控制颜色透明度的应用场景非常重要例如在设计图形界面或需要半透明效果的地方。
二、文本对话框
void MainWindow::on_pushButton_2_clicked()
{QString pathQDir::currentPath();//要打开的文件的地址 就用当前的地址QString title文本对话框;//生成的这个框左上角的名字QString filter tr(文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*));//filter是一个过滤器QString aFileNameQFileDialog::getOpenFileName(this,title,path,filter);qDebug() aFileName Qt::endl;
}文本对话框代码解析
QDir::currentPath() 返回当前工作目录的路径 QString title 变量保存了对话框的标题文字当对话框弹出时标题栏会显示“文本对话框” QString filter 变量定义了文件对话框中显示的文件类型过滤器。 tr() 函数用于国际化支持将字符串翻译成当前语言环境下的文字。虽然在这个例子中没有实际变化但它使代码更具扩展性。 分号 ;; 用于分隔不同的过滤器项。 每个过滤器项由描述和模式组成例如 “文本文件(.txt)显示“文本文件”并仅列出 .txt 文件。 图片文件(.jpg .gif .png)显示“图片文件”并列出 .jpg, .gif, 和 .png 文件。 所有文件(.)”显示“所有文件”并列出所有类型的文件。 QFileDialog::getOpenFileName 是一个静态方法用于显示一个标准的打开文件对话框
三、输入对话框
1.整型输入对话框
void MainWindow::on_pushButton_3_clicked()
{bool falgfalse;auto intdataQInputDialog::getInt(this,tr(整型输入),tr(请输入),200,0,400,1,falg);if(falg){qDebug() intdata Qt::endl;}
}2.浮点数输入对话框
void MainWindow::on_pushButton_4_clicked()
{bool falgfalse;auto doubledataQInputDialog::getDouble(this,tr(浮点数输入),tr(请输入),0.1,-2,4,1,falg);if(falg){qDebug() doubledata Qt::endl;}
}3.条目对话框
void MainWindow::on_pushButton_5_clicked()
{bool flagfalse;QStringList items;items条目1条目2;//创建一个个条目auto itemdataQInputDialog::getItem(this,tr(条目对话框),tr(请选择),items,1,true,flag);if(flag){qDebug() itemdata Qt::endl;}
}四、提示对话框
1.提问对话框
QMessageBox::question(this,tr(提示对话框),tr(你是单身狗吗?));//默认有两个按键Yes No2.消息对话框
QMessageBox::information(this,tr(提示对话框),tr(请赶紧学习),QMessageBox::Yes);3.警告对话框
QMessageBox::warning(this,tr(警告对话框),tr(你最好找个地方发泄一下),QMessageBox::Ok);4.关键对话框
QMessageBox::critical(this,tr(关键提示对话框), tr(我梦寐以求是真爱和自由),QMessageBox::Ok);五、进度对话框
当我们复制或进行文件传输时会显示一个进度条的对话框我们可以使用QProcessDialog来操作
void MainWindow::on_pushButton_7_clicked()
{_progressdialognew QProgressDialog(tr(文件复制中),tr(取消复制),0,5000,this);_progressdialog-setWindowTitle(文件复制框);_progressdialog-setWindowModality(Qt::ApplicationModal);//设置为全局模态//设置定时器_qtimernew QTimer(this);//时间到了就更新connect(_qtimer,QTimer::timeout,this,MainWindow::on_updateProgressDialog);connect(_progressdialog,QProgressDialog::canceled,this,MainWindow::on_cancelProgressDialog)_qtimer-start(2);//每2毫秒开始一次}void MainWindow::on_updateProgressDialog()//窗口的更新
{_count;if(_count5000){_qtimer-stop();//停止delete _qtimer;_qtimernullptr;delete _progressdialog;_progressdialognullptr;_count0;return;}_progressdialog-setValue(_count);
}void MainWindow::on_cancelProgressDialog()
{_qtimer-stop();delete _qtimer;_qtimer nullptr;delete _progressdialog;_progressdialog nullptr;_count 0;return;}我们首先创建一个按键然后构造这个槽函数on_pushButton_7_clicked() 当点击按键时进入这个槽函数这里的 _progressdialog是QProgressDialog类型我把他写成了指针当作类MainWindow的类对象所以这里就直接new就行(如果直接用对象的方式创建的话一定要绑定父窗口)下面那个_qtimer我也在MainWindow中的对象里面添加了, _count相当于进度条如果满了5000就退出窗口定时器和窗口都是new出来的所以要手动delete 下面这个函数on_cancelProgressDialog()是因为打开窗口会有一个取消的按钮我们为了点击取消可以关闭窗口就写了这个函数
六、向导对话框
当我们想引导用户操作时可以采用向导对话框比如安装软件时就会根据向导对话框一步一步操作我们也实现一个向导对话框 我先写一部分供大家看看
void MainWindow::on_pushButton_8_clicked()
{QWizard wizar(this);wizar.setWindowTitle(tr(全城热恋));auto page1new QWizardPage();page1-setTitle(tr(婚恋介绍引导程序));auto label1new QLabel();label1-setText(tr(该程序帮助您找到人生伴侣));auto layoutnew QVBoxLayout();layout-addWidget(label1);page1-setLayout(layout);wizar.addPage(page1);wizar.show();wizar.exec();
}QWizard是向导对话框 QWizardPage是向导对话框中的每一页的页面 QLabel是标签 上面可以输入文字 QVBoxLayout是垂直布局 流程就是新开一页写页名然后写标签标签和页面放入布局中然后再总体加入这个wizar向导中 给你们看看这一页的演示效果再对着代码分析
接下来我们继续完成全部内容 总体代码如下
void MainWindow::on_pushButton_8_clicked()
{//第一页-----------------------------QWizard wizar(this);wizar.setWindowTitle(tr(全城热恋));auto page1new QWizardPage();page1-setTitle(tr(婚恋介绍引导程序));auto label1new QLabel();label1-setText(tr(该程序帮助您找到人生伴侣));auto layoutnew QVBoxLayout();layout-addWidget(label1);page1-setLayout(layout);wizar.addPage(page1);//第二页------------------------------QWizardPage * page2new QWizardPage();page2-setTitle(tr(选择心动类型));auto groupnew QButtonGroup(page2);//将按钮组父亲设置到第二页上//创建第一个按钮 添加名字 放入按钮组中auto btn1new QRadioButton;btn1-setText(tr(白富美));group-addButton(btn1);//创建第二个按钮 添加名字 放入按钮组中auto btn2new QRadioButton;btn2-setText(tr(萝莉));group-addButton(btn2);auto btn3new QRadioButton;btn3-setText(tr(御姐));group-addButton(btn3);auto btn4new QRadioButton;btn4-setText(tr(清纯少女));group-addButton(btn4);auto btn5new QRadioButton;btn5-setText(tr(女汉子));group-addButton(btn5);auto btn6new QRadioButton;btn6-setText(tr(成年人不做选择我全要));group-addButton(btn6);auto layout2new QVBoxLayout();for(int i0;igroup-buttons().size();i){layout2-addWidget(group-buttons()[i]);}page2-setLayout(layout2);wizar.addPage(page2);//第三页----------------------------------QWizardPage * page3new QWizardPage();page3-setTitle(tr(你的缘分即将到来));auto label3new QLabel();label3-setText(感谢您的参与接下来的一个月会遇到对的人);QVBoxLayout * layout3new QVBoxLayout();layout3-addWidget(label3);//标签放入布局page3-setLayout(layout3);//布局放入页面wizar.addPage(page3);wizar.show();wizar.exec();
}内容展示
总结
在调用这些对话框的时候不需要死记硬背传参的时候多查看文档即可 函数内参数是什么不需要记忘记了就查看文档多用就会了
基础对话框基本上就是以上这些了在实际开发中99%的也是这些和在这些的基础上进行变换