当前位置:Gxlcms > PHP教程 > lesson3-Qt对话框_PHP教程

lesson3-Qt对话框_PHP教程

时间:2021-07-01 10:21:17 帮助过:9人阅读

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、头文件
  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></qtgui></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、实现文件
  1. <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>//获取</li></ol>
输出流
  • QTextStream out(&file);
  • //将textEdit的内容写入到out
  • out<toPlainText()<<"\n";
  • }

  • void buildInDialog::closeSlot()
  • {
  • QProgressDialog *progress = new QProgressDialog();
  • progress->setRange(0, 100);
  • for(int i=0; i<=100; i+=10)
  • {
  • qApp->processEvents();
  • progress->setValue(i);
  • sleep(1);
  • }
  • }
  • 3、主函数
    1. <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></qapplication></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、对话框的概念 对话框在各种软件中都会使用到,一般用来给用户提示信息或者接收用户反馈的信息,因此对...

    人气教程排行