2月10日QT

作业> 将文本编辑器功能完善

复制代码
include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>   //消息对话框类
#include <QFontDialog>  //字体类对话框
#include <QFont>        //字体类
#include <QColorDialog> //颜色对话框类
#include <QColor>       //颜色类
#include <QFileDialog>
#include <QFile>
#include <QInputDialog>
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

//字体对话框槽函数
void Widget::on_fontBtn_clicked()
{
    bool ok;  //
    //调用字体对话框静态成员函数
    QFont f=QFontDialog::getFont(&ok,        //是否确定选择
                         QFont("楷体",10,10),//对话框初始字体
                         this,               //父组件
                         "选自字体");         //对话框标题
    //对是否选中字体判断
    if(ok==true)
    {
    //将选择的字体设置到文本编辑器中
 //   ui->textEdit->setFont(f);     //改变所有文字字体
    ui->textEdit->setCurrentFont(f);//改变选中文字的字体
    }else
    {
        QMessageBox::information(this,"提示","用户取消了字体设置");
    }
}


//颜色按钮
void Widget::on_colorBtn_clicked()
{
    //调用静态成员函数
    QColor c =QColorDialog::getColor(QColor("red"),
                                     this,
                                     "选择颜色");
    //对选择的颜色进行判端
    if(c.isValid())
    {
        //表示用户点击确定按钮
       // ui->textEdit->setTextColor(c); //设置字体颜色
      ui->textEdit->setTextBackgroundColor(c); //设置字体背景颜色
    }else
    {
        //用户点击取消按钮
        QMessageBox::information(this,"提示","用户取消了选择颜色");
    }
}


//打开文件按钮
void Widget::on_openBtn_clicked()
{
    //调用静态成员函数
    QString fname =QFileDialog::getOpenFileName(this,
                                                "选择文件",
                                                "./",
                                            "all(*.*);;text(*.txt);;Image(*.png *.jpg *.xpm);;soures,(*.cpp)");
    //进行文件IO操作
    //1.实例化一个文件对象
    QFile f;
    f.setFileName(fname); //设置要管理的文件

    //2.打开文件
    if(!f.exists())
    {
        QMessageBox::information(this,"提示","文件不存在");
        return;
    }
    if(!f.open(QFile::ReadOnly|QFile::WriteOnly))
    {
        QMessageBox::information(this,"提示","文件打开失败");
    }
    //程序至此,表示文件已经打开

    //3.读取文件中的数据
    QByteArray msg =f.readAll();
    //将读取出来的数据展示出来
    ui->textEdit->setText(QString(msg));

    //4.关闭文件
    f.close();
}

//输入对话框的槽函数
void Widget::on_inputBtn_clicked()
{
    bool ok;
    //调用静态成员函数
   QString text= QInputDialog::getText(this,   //父组件
                          "输入文本",           //对话框标题
                          "请输入姓名",         //输入框提示文本内容
                          QLineEdit::Password, //输入框回显模式
                          "",                  //输入框中默认文本
                          &ok);                //判断用户是否选中输入的数据
    //对ok精选判断
    if(ok==true)
    {
        //表示用户确定了输入的数据
        qDebug()<<text;
    }else
    {
        QMessageBox::information(this,"提示","用户取消输入数据");
    }
}

//另存对话框的槽函数
void Widget::on_saveBtn_clicked()
{
    QString f = QFileDialog::getSaveFileName(this, "另存为", "", "文本文件 (*.txt);;所有文件 (*.*)");
}
相关推荐
朔北之忘 Clancy5 分钟前
2020 年 6 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·尺取法
消失的旧时光-194311 分钟前
C++ 中的 auto 与 nullptr:不是语法糖,而是类型系统升级
开发语言·c++
fpcc23 分钟前
跟我学C++中级篇—C++17中的元编程逻辑操作
c++·模板编程
HABuo23 分钟前
【Linux进程(五)】进程地址空间深入剖析-->虚拟地址、物理地址、逻辑地址的区分
linux·运维·服务器·c语言·c++·后端·centos
AuroraWanderll43 分钟前
类和对象(六)--友元、内部类与再次理解类和对象
c语言·数据结构·c++·算法·stl
Tim_101 小时前
【C++入门】05、复合类型-数组
开发语言·c++·算法
jikiecui1 小时前
信奥崔老师:三目运算 (Ternary Operator)
数据结构·c++·算法
无限进步_1 小时前
【C语言&数据结构】另一棵树的子树:递归思维的双重奏
c语言·开发语言·数据结构·c++·算法·github·visual studio
汉克老师1 小时前
GESP2025年9月认证C++一级真题与解析(判断题1-10)
c++·数据类型·累加器·循环结构·gesp一级·gesp1级
不爱吃糖的程序媛1 小时前
OpenHarmony跨端生态适配全指南|Flutter/RN/三方库/C/C++/仓颉 鸿蒙化最佳实践
c语言·c++·flutter