lesson3-Qt对话框_PHP教程

php中文网
发布: 2016-07-12 09:05:35
原创
1460人浏览过

豆包AI编程
豆包AI编程

豆包推出的AI编程助手

豆包AI编程 483
查看详情 豆包AI编程

lesson3-qt对话框

一、qdialog类
1、对话框的概念
对话框在各种软件中都会使用到,一般用来给用户提示信息或者接收用户反馈的信息,因此对话框是应用程序和用户交互的平台。
对话框是一个顶层窗口,不能嵌入到其他窗口中。
2、对话框的种类
1)、模式对话框,该应用程序的其他窗口不能被访问,必须等待当前对话框消失,显示模式对话框一般调用它的exec()函数
2)、非模式对话框,该应用程序的其他窗口还能继续被访问,显示非模式对话框一般调用它的show()函数
3、qdialog类的父类是qwidget





二、qdialog的派生类
为了方便开发人员的使用,qt对一些特殊功能的对话框做了封装,提供一套标准的对话框。这些内建对话框提供静态函数便于使用,通常都是调用系统本地的对话框
1、qfiledialog

使用方法:
1、打开文件对话框,返回选择的文件名
qstring str = qfiledialog::getopenfilename(
父窗口,
对话框名字,
默认选择路径,
文件过滤器);
2、根据名字打开文件,成功返回true,失败返回false
qfile file(str);
file.open(qiodevice::readwrite);
3、得到一个输入流
qtextstream in(&file);
4、逐行读出输入流
in.readline();


2、qcolordialog

使用方法:
1、获取调色板
qpalette palette = textedit->palette();
2、打开颜色对话框,获取颜色
qcolor color = qcolordialog::getcolor(
palette.color(qpalette::text), //对话框初始颜色
this //父窗口
);
3、设置调色板颜色
palette->setcolor(
qpalette::text, //要设置的调色板的部位
color //要设置的颜色
);
4、加载调色板
textedit->setpalette(palette);

gui为不同的部位分别设置了颜色标志


3、qfontdialog


使用方法:
1、打开字体对话框,获取字体
bool ok;
qfont font = qfontdialog::getfont(&ok);
如果点击对话框的“确定”按钮,那么ok的值就会变为true;如果点击对话框的“取消”按钮,那么ok的值就会变为false
2、设置字体
textedit->setfont(font);

4、qinputdialog

使用方法:
打开输入对话框,输入的内容会返回
qstring str = qinputdialog::gettext(
this, //父窗口
“inputdialog”, //窗口标题
“please input”, //输入框上面的标签文字
qlineedit::normal, //编辑框的显示方式
qdir::home(), //编辑框默认的内容
ok //回填bool变量
)

5、qprogressdialog

qprogress::setrange(0,100) //设置进度条范围
qprogress::setvalue(50) //设置进度条当前值

三、qmessagebox
qt提供了几种显示信息的消息框,这些消息框都是模态对话框,平时在软件里面会经常用到
1、qmessagebox::question
一个具有标题和文本的消息询问框,开发人员可以根据具体需要定制按钮的个数和按钮的作用

2、qmessagebox::informat
一个具有标题和提示文本的提示消息框,开发人员可以根据具体需要定制按钮的个数和按钮的作用

3、qmessagebox::warning
一个具有标题和文本信息的警示消息框,开发人员可以根据具体需要定制按钮的个数和按钮的作用

4、qmessagebox::critical
一个具有标题和文本信息的致命信息框,开发人员可以根据具体需要定制按钮的个数和按钮的作用

5、qmessagebox::about
一个具有标题和文本的消息框

6、qmessagebox::aboutqt
显示关于qt的消息框

7、消息按钮的制订



四、qdialog实例
1、头文件
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>#ifndef buildindialog_h<br /> </li><li>#define buildindialog_h<br /></li><li><br /></li><li>#include <qtgui><br /></li><li><br /></li><li>class buildindialog : public qdialog<br /></li><li>{<br /></li><li>q_object<br /></li><li>public:<br /></li><li>buildindialog();<br /></li><li>private:<br /></li><li>qpushbutton *filebtn;<br /></li><li>qpushbutton *colorbtn;<br /></li><li>qpushbutton *fontbtn;<br /></li><li>qpushbutton *savebtn;<br /></li><li>qpushbutton *closebtn;<br /></li><li><br /></li><li>qtextedit *textedit;<br /></li><li>private slots:<br /></li><li>void fileslot();<br /></li><li>void colorslot();<br /></li><li>void fontslot();<br /></li><li>void saveslot();<br /></li><li>void closeslot();<br /></li><li><br /></li><li>};<br /></li><li><br /></li><li><br /></li><li><br /></li><li>#endif</li></ol>
登录后复制
2、实现文件
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>#include "buildindialog.h"<br /> </li><li><br /></li><li>buildindialog::buildindialog()<br /></li><li>{<br /></li><li>filebtn = new qpushbutton("open");<br /></li><li>colorbtn = new qpushbutton("color");<br /></li><li>fontbtn = new qpushbutton("font");<br /></li><li>savebtn = new qpushbutton("save");<br /></li><li>closebtn = new qpushbutton("close");<br /></li><li><br /></li><li>textedit = new qtextedit();<br /></li><li><br /></li><li><br /></li><li>//布局<br /></li><li>qvboxlayout *vlay = new qvboxlayout();<br /></li><li>qhboxlayout *hlay = new qhboxlayout();<br /></li><li>vlay->addwidget(filebtn);<br /></li><li>vlay->addwidget(colorbtn);<br /></li><li>vlay->addwidget(fontbtn);<br /></li><li>vlay->addwidget(savebtn);<br /></li><li>vlay->addwidget(closebtn);<br /></li><li><br /></li><li>hlay->addwidget(textedit);<br /></li><li>hlay->addlayout(vlay);<br /></li><li><br /></li><li>setlayout(hlay);<br /></li><li><br /></li><li>connect(filebtn, signal(clicked()), this, slot(fileslot()));<br /></li><li>connect(colorbtn, signal(clicked()), this, slot(colorslot()));<br /></li><li>connect(fontbtn, signal(clicked()), this, slot(fontslot()));<br /></li><li>connect(savebtn, signal(clicked()), this, slot(saveslot()));<br /></li><li>connect(closebtn, signal(clicked()), this, slot(closeslot()));<br /></li><li>}<br /></li><li><br /></li><li>void buildindialog::fileslot()<br /></li><li>{<br /></li><li>//获取文件名字<br /></li><li>qstring str = qfiledialog::getopenfilename(this, "打开文件", "/", "all file(*.*)");<br /></li><li><br /></li><li>//打开文件<br /></li><li>qfile file(str);<br /></li><li>if(!file.open(qiodevice::readwrite))<br /></li><li>return;<br /></li><li>//得到输入流<br /></li><li>qtextstream in(&file);<br /></li><li>//读取数据<br /></li><li>while(!in.atend())<br /></li><li>{<br /></li><li>qstring st = in.readline();<br /></li><li>textedit->append(st);<br /></li><li>}<br /></li><li>}<br /></li><li><br /></li><li>void buildindialog::colorslot()<br /></li><li>{<br /></li><li>//获取条色板<br /></li><li>qpalette palette = textedit->palette();<br /></li><li>//打开对话框,获取颜色<br /></li><li>qcolor color = qcolordialog::getcolor(palette.color(qpalette::text), this);<br /></li><li><br /></li><li>if(color.isvalid())<br /></li><li>{<br /></li><li>//将颜色放到条色板<br /></li><li>palette.setcolor(qpalette::window, color);<br /></li><li>//加载调色板<br /></li><li>textedit->setpalette(palette);<br /></li><li>}<br /></li><li><br /></li><li>}<br /></li><li><br /></li><li>void buildindialog::fontslot()<br /></li><li>{<br /></li><li>bool ok;<br /></li><li>qfont font = qfontdialog::getfont(&ok);<br /></li><li>if(ok)<br /></li><li>textedit->setfont(font);<br /></li><li>}<br /></li><li><br /></li><li>void buildindialog::saveslot()<br /></li><li>{<br /></li><li>bool ok;<br /></li><li>//获取输入的信息<br /></li><li>qstring str = qinputdialog::gettext(this, "输入对话框", "请输入名字", qlineedit::normal, "wj", &ok);<br /></li><li><br /></li><li>//根据输入的名字打开文件<br /></li><li>qfile file(str);<br /></li><li>file.open(qiodevice::writeonly);<br /></li><li>//获取输出流<br /></li><li>qtextstream out(&file);<br /></li><li>//将textedit的内容写入到out<br /></li><li>out<<textedit->toplaintext()<<"\n";<br /></li><li>}<br /></li><li><br /></li><li>void buildindialog::closeslot()<br /></li><li>{<br /></li><li>qprogressdialog *progress = new qprogressdialog();<br /></li><li>progress->setrange(0, 100);<br /></li><li>for(int i=0; i<=100; i+=10)<br /></li><li>{<br /></li><li>qapp->processevents();<br /></li><li>progress->setvalue(i);<br /></li><li>sleep(1);<br /></li><li>}<br /></li><li>} </li></ol>
登录后复制
3、主函数
<ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>#include "buildindialog.h"<br /> </li><li>#include <qapplication><br /></li><li><br /></li><li>int main(int argc, char *argv[])<br /></li><li>{<br /></li><li>//设置编码,防止汉字出现乱码<br /></li><li>qtextcodec::setcodecforcstrings(qtextcodec::codecforname("utf-8"));<br /></li><li>qapplication app(argc, argv);<br /></li><li><br /></li><li>buildindialog dialog;<br /></li><li>dialog.show();<br /></li><li><br /></li><li>return app.exec();<br /></li><li>} </li></ol>
登录后复制




www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1068089.htmlTechArticlelesson3-Qt对话框 一、QDialog类 1、对话框的概念 对话框在各种软件中都会使用到,一般用来给用户提示信息或者接收用户反馈的信息,因此对...
相关标签:
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号