/*自定义的内建对话框的实现文件builtindialog.cpp*/
#include"builtindialog.h"
#include<QtGui>
/*构造函数的实现*/
BuiltInDialog::BuiltInDialog(QWidget *parent):QDialog(parent)
{
num=0;/*初始化builtindialog.h头文件中定义的变量num为0,
该变量用来捕获打开的txt文本中的函数,进而用于进度框*/
textEditDisplay=new QTextEdit();/*创建一个默认显示内容为空的
文本编辑框QTextEdit对象textEditDisplay,该文本编辑框和
槽函数连接,通过4个按钮可以对其中的内容进行操作*/
filePushButton=new QPushButton("打开");//创建出5个按钮,每个
colorPushButton=new QPushButton("颜色");//按钮对应一定的功能,
fontPushButton=new QPushButton("字体");//在这些功能的使用过程中
inputPushButton=new QPushButton("保存");//会调用到Qt的内建对话框
closePushButton=new QPushButton("关闭");
/*创建一个垂直布局管理器QVBoxLayout类的对象rightLayout,将创建的
5个按钮进行垂直布局,即排成一列*/
QVBoxLayout * rightLayout=new QVBoxLayout();
rightLayout->addWidget(filePushButton);
rightLayout->addWidget(colorPushButton);
rightLayout->addWidget(fontPushButton);
rightLayout->addWidget(inputPushButton);
rightLayout->addWidget(closePushButton);
/*创建一个水平布局管理器QHBoxLayout类的对象mainLayout,将上面的垂直
布局管理器类的对象rightlayout和多行文本输入框类的对象textEditDisplay
进行了水平排布*/
QHBoxLayout * mainLayout=new QHBoxLayout;
mainLayout->addWidget(textEditDisplay);
mainLayout->addLayout(rightLayout);
/*水平布局是窗口的主布局,通过setLayout()来设置*/
setLayout(mainLayout);
/*将所有的QPushButton对象的clicked()信号和对应的槽函数进行关联*/
connect(filePushButton,SIGNAL(clicked()),this,SLOT(slotFile()));
connect(colorPushButton,SIGNAL(clicked()),this,SLOT(slotColor()));
connect(fontPushButton,SIGNAL(clicked()),this,SLOT(slotFont()));
connect(inputPushButton,SIGNAL(clicked()),this,SLOT(slotInput()));
connect(closePushButton,SIGNAL(clicked()),this,SLOT(close()));
/*调用setWinddowTitle()函数设置对话框的标题为"内建对话框"。*/
setWindowTitle("内建对话框");
}
/*以上是自定义的内建对话框的构造函数部分,在对象被创建时就会
去执行,是该程序的初始化部分*/
/*该槽函数和filePuahButton进行连接,其所实现的功能是通过文件对话框获取一个文本文件的
路径,然后打开该文本文件,将其内容读取到QTextEdit类的对象中进行显示*/
void BuiltInDialog::slotFile()
{
/*通过QFileDialog::getOpenFileName()函数打开一个文件对话框,用于
将用户打开的txt格式的文件的路径返回到QString类的对象str中*/
QString str=QFileDialog::getOpenFileName(this,"open file dialog","/home","Text files(*.txt)");
QFile file(str); //QFile类是一个用来读写二进制文件或者文本文件的输入输出设备
/*以读/写方式打开文件,若成功,返回真;否则,返回假*/
if(!file.open(QIODevice::ReadWrite))
{
return;
}
/*QTextStream类提供了使用QIODevice读写文本的基本功能*/
QTextStream in(&file);
/*QTextStream::atEnd用来判断是否读到文件尾*/
while(!in.atEnd())
{
QString line=in.readLine(); //readLine()用来逐行读取文件中的内容,每读取一行记录
num++; //一次值,放入到num中。
textEditDisplay->append(line);//通过QTextEdit::append()函数将读取的内容追加到
} //TextEdit类的对象中进行显示
}
/*该槽函数和ColorPushButton按钮进行相连,功能是打开一个颜色对话框。其功能是使用Qt内建的
颜色对话框QColorDialog类来获取用户所选择的颜色,并将文本编辑框中的文本设置为该颜色*/
void BuiltInDialog::slotColor()
{
/*通过QPalette::palette()获取文本编译框的调色板*/
QPalette palette=textEditDisplay->palette();
/*调用QColorDialog::getColor()创建并显示一个颜色对话框,并且该对话框是模态的*/
QColor color=QColorDialog::getColor(palette.color(QPalette::Text),this);
/*通过QColor::isValid()函数来判断返回的颜色值是否有效,有效则通过函数
QPalette::setColor()设置调色板的背景色为颜色对话框返回的颜色。*/
if(color.isValid())
{
palette.setColor(QPalette::Text,color);
textEditDisplay->setPalette(palette);//通过函数QTextEdit::setPalette()重新
} //设置文本编辑框的背景颜色
}
/*该槽函数和fontPushButton按钮进行连接,功能是设置QTextEdit类的对象中所显示的文本的字体*/
void BuiltInDialog::slotFont()
{
bool ok;
/*QFontDialog::getFont()函数创建并显示一个字体对话框。其中的参数用来确定单击的是
字体对话框的“确定”按钮还是“取消”按钮。点击“确定”按钮,则ok的值为true。*/
QFont font=QFontDialog::getFont(&ok);
if(ok) //通过判断ok的值来确定是否设置文本编辑框的字体
{
textEditDisplay->setFont(font);
}
}
/*该槽函数和inputPushButton按钮进行连接,功能是读取QTextEdit类的对象中的内容,
然后将该内容保存到一个文件中去。在弹出之前会弹出一个进度对话框*/
void BuiltInDialog::slotInput()
{
bool ok;
/*要保存到的文件的文件名和路径通过调用QInputDialof::getText()函数创建并显示
一个文本输入对话框。用户在该对话框中输入文件名和路径,单击确定按钮后,输入的
路径会返回到字符串变量filePath中。*/
QString filePath=QInputDialog::getText(this,tr("Input Dialog"), tr("InputSavePath:"),QLineEdit::Normal,QDir::home().dirName(),&ok);
if(!ok)
return;
QFile file(filePath);
/*通过调用QFile::open()函数打开该路径下的文件,如果文件不存在,则会先创建再打开。
根据函数的返回值就可以判断出打开是否成功*/
if(!file.open(QIODevice::WriteOnly|QIODevice::Text))
{
return;
}
/*弹出一个进度对话框*/
slotProgress();
/*使用QTextStream的运算符重载后的“<<”运算符将文本框中的内容写入到文件中*/
QTextStream out(&file);
QString a=textEditDisplay->toPlainText();
out<<a<<"\n";
if(ok&&!a.isEmpty())
{
textEditDisplay->setText(a);
}
}
/*该槽函数创建了一个进度对话框,并且模拟显示了一个工作进程*/
void BuiltInDialog::slotProgress()
{
QProgressDialog *progressDialog=new QProgressDialog(this);
QFont font("ZYSong18030",12);
progressDialog->setFont(font); //设置字体
progressDialog->setWindowModality(Qt::WindowModal);//设置对话框的类型为模态对话框
progressDialog->setMinimumDuration(1);//设置对话框出现之前必须经过的时间
progressDialog->setWindowTitle(tr("进度"));//设置进度对话框的标题
progressDialog->setLabelText(tr("Copying......"));//设置对话框中文本提示信息
progressDialog->setCancelButtonText(tr("Cancel"));
progressDialog->setRange(0,num); //设置进度条的范围,模拟值
for(int i=0;i<num;i++)
{ //QProgressDialog::setValue()函数来推进进度条显示的进度
progressDialog->setValue(i);
qApp->processEvents();
sleep(1);
//QProgressDialog::wasCanceled来判断是否单击了“取消”按钮,如果是则中断“复制”操作
if(progressDialog->wasCanceled())
return;
}
return;
}
没有合适的资源?快使用搜索试试~ 我知道了~
BuildInDialog.tar.gz
需积分: 9 42 下载量 13 浏览量
2013-07-02
16:55:53
上传
评论
收藏 3KB GZ 举报
温馨提示
共3个文件
cpp:2个
h:1个
Linux下的qt程序,关于内建对话框的,三个文件分别为main.cpp ,builtindialog.cpp,builtindialog.h,下载后直接在终端中先后使用命令 qmake -project、qmake、make,然后直接执行就可以了。没有用creator。
资源推荐
资源详情
资源评论
收起资源包目录
BuildInDialog.tar.gz (3个子文件)
main.cpp 498B
builtindialog.h 926B
builtindialog.cpp 6KB
共 3 条
- 1
资源评论
玖零大壮
- 粉丝: 4276
- 资源: 108
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功