当前位置: 首页 > article >正文

2/10QT

2> 将文本编辑器功能完善

主函数main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_fontBtn_clicked();

    void on_colorBtn_clicked();

    void on_openFileBtn_clicked();

    void on_inputBtn_clicked();

    void on_saveBtn_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QFontDialog>
#include <QFont>
#include<QColor>
#include <QColorDialog>
#include<QFile>
#include <QFileDialog>
#include<QMessageBox>
#include<QDebug>
#include<QInputDialog>
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->setCurrentFont(f);
    }else
    {
        QMessageBox::information(this,"提示","用户取消了选择字体");
    }

}
void Widget::on_colorBtn_clicked()
{
    QColor c=QColorDialog::getColor(QColor("red"),
                                    this,
                                    "选择颜色");
    if(c.isValid())
    {
        ui->textEdit->setTextBackgroundColor(c);
    }else
    {
        QMessageBox::information(this,"提示","用户取消了选择颜色");
    }
}

void Widget::on_openFileBtn_clicked()
{
    //调用文件对话框的成员函数,打开系统的文件对话框
    QString fname=QFileDialog::getOpenFileName(this,
                                               "选择文件",
                                               "./",
                                               "all(*.*);;text(^.txt);;Image(*.png *.jpg *.xpm);;soures(*.cpp)");
    qDebug()<<fname;
    //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);
    if(ok==true)
    {
        qDebug()<<text;
    }else
    {
        QMessageBox::information(this,"提示","用户取消了输入数据");
    }
}

//另存为槽函数
void Widget::on_saveBtn_clicked()
{
QString fname = QFileDialog::getSaveFileName(this,"另存为","./","Text Files (*.txt);;All Files (*)");
if(fname.isEmpty())
{
    QMessageBox::information(this,"提示","用户取消了保存操作");
    return ;
}
QFile f(fname);
if(!f.open(QFile::WriteOnly))
{
    QMessageBox::critical(this,"错误","无法打开文件进行写入");
    return ;
}
QTextStream out(&f);
out<<ui->textEdit->toPlainText();
f.close();

QMessageBox::information(this,"成功","文件保存成功");
}

牛客


http://www.kler.cn/a/540763.html

相关文章:

  • DDR原理详解
  • 51c自动驾驶~合集49
  • DeepSeek训练成本与技术揭秘
  • WordPress wp-recall插件存在SQL注入漏洞(CVE-2024-32709)
  • Python分享20个Excel自动化脚本
  • Dify Ollama本地私有化模型实践
  • centos系统清理docker日志文件
  • 【PG】DROP TABLE ... CASCADE
  • 《qt easy3d中添加孔洞填充》
  • 持续集成CI(Continuous Integration)
  • Unity笔试常考
  • 没用的文章又➕1
  • 如何使用Xcode进行iOS应用开发?
  • 如何定义“破坏环境”
  • pnpm的指令和优点
  • 阿里AI通义千问官网入口、APP下载,使用教程
  • 本地部署deepseek-r1:7b模型
  • 8、Python 面试题解析:实例方法、静态方法和类方法的区别
  • w~自动驾驶~合集17
  • C#程式状态机及其Godot实践
  • Docker的深入浅出
  • 如何利用DeepSeek结合深度学习与NLP技术,实现跨模态搜索的语义理解与个性化推荐
  • Firefox无法隐藏标题栏
  • 单片机成长之路(51基础篇) - 008 C51 的标示符和关键字
  • Tauri教程-实战篇-第六节 托盘、请求完善
  • VSCode中出现“#include错误,请更新includePath“问题,解决方法