QT记事本程序理解

 

1.头文件

#ifndef QWDIALOG_H
#define QWDIALOG_H

#include <QDialog>

namespace Ui {
class QWDialog;
}

class QWDialog : public QDialog
{
    Q_OBJECT   //只要使用信号与槽功能的类,都需加入此宏定义

public:
    explicit QWDialog(QWidget *parent = 0); //构造函数
    ~QWDialog();   //析构函数

private slots:
    void on_chkBoxUnder_clicked(bool checked);  //设置下划线

    void on_chkBoxItalic_clicked(bool checked); //设置斜体

    void on_chkBoxBold_clicked(bool checked);   //设置粗体

    void setTextFontColor(); //设置字体颜色
private:
    Ui::QWDialog *ui;   //指向界面的指针,用于访问界面组件
};

#endif // QWDIALOG_H




2,cpp

#include "qwdialog.h"
#include "ui_qwdialog.h"

QWDialog::QWDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QWDialog)
{
    ui->setupUi(this); //UI初始化

    connect(ui->rBtnBlue,SIGNAL(clicked()),this,SLOT(setTextFontColor()));//信号与槽的关联
    connect(ui->rBtnRed,SIGNAL(clicked()),this,SLOT(setTextFontColor()));//信号与槽的关联
    connect(ui->rBtnBlack,SIGNAL(clicked()),this,SLOT(setTextFontColor()));//信号与槽的关联
}

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

void QWDialog::setTextFontColor()
{ //设置字体颜色
    QPalette   plet=ui->txtEdit->palette();
    if (ui->rBtnBlue->isChecked())
        plet.setColor(QPalette::Text,Qt::blue);
    else if (ui->rBtnRed->isChecked())
        plet.setColor(QPalette::Text,Qt::red);
    else if (ui->rBtnBlack->isChecked())
        plet.setColor(QPalette::Text,Qt::black);
    else
        plet.setColor(QPalette::Text,Qt::black);

    ui->txtEdit->setPalette(plet);
}


void QWDialog::on_chkBoxUnder_clicked(bool checked)
{//设置下划线
    QFont   font=ui->txtEdit->font();
    font.setUnderline(checked);
    ui->txtEdit->setFont(font);
}

void QWDialog::on_chkBoxItalic_clicked(bool checked)
{ //设置斜体
    QFont   font=ui->txtEdit->font();
    font.setItalic(checked);
    ui->txtEdit->setFont(font);
}

void QWDialog::on_chkBoxBold_clicked(bool checked)
{ //设置粗体
    QFont   font=ui->txtEdit->font();
    font.setBold(checked);
    ui->txtEdit->setFont(font);

}

3,理解部分

#ifndef QWDIALOG_H
#define QWDIALOG_H

#include <QDialog> //这个是类的标志,也就是说它是一个消息框体

namespace Ui {
class QWDialog;    //这可以理解为一个命名空间,每一个你的程序前面都会有,养成习惯
}

class QWDialog : public QDialog
{
    Q_OBJECT   //只要使用信号与槽功能的类,都需加入此宏定义

public:
    explicit QWDialog(QWidget *parent = 0); //构造函数
    ~QWDialog();   //析构函数,也就是关闭时的函数

private slots:
    void on_chkBoxUnder_clicked(bool checked);  //设置下划线

    void on_chkBoxItalic_clicked(bool checked); //设置斜体

    void on_chkBoxBold_clicked(bool checked);   //设置粗体

    void setTextFontColor(); //设置字体颜色
private:
    Ui::QWDialog *ui;   //指向界面的指针,用于访问界面组件
};

#endif // QWDIALOG_H
#include "qwdialog.h"
#include "ui_qwdialog.h" //这个是ui界面给出来的

QWDialog::QWDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QWDialog)   //这个是将这个消息窗体的类当作整个文件的父类
{
    ui->setupUi(this); //UI初始化


    //这个就是整个QT图像编程语言最重要的知识点--信号与槽。
    //可以理解为一个萝卜一个坑,萝卜拔出来,坑就形成了,也就是说:前者会触发后者的发生
    connect(ui->rBtnBlue,SIGNAL(clicked()),this,SLOT(setTextFontColor()));//信号与槽的关联
    connect(ui->rBtnRed,SIGNAL(clicked()),this,SLOT(setTextFontColor()));//信号与槽的关联
    connect(ui->rBtnBlack,SIGNAL(clicked()),this,SLOT(setTextFontColor()));//信号与槽的关联
}

QWDialog::~QWDialog()
{
    delete ui; //这就是析构函数,也就是把ui给从内存里面清除掉
}

void QWDialog::setTextFontColor()
{ //设置字体颜色

    //QPalette   plet 就是在QPalette里面定义一个变量,她的名字为plet

    //ui->txtEdit->palette() //这个就是在ui里面有一个控件叫做txtEdit,这个控件带有一个函数,名字叫做 palette();

    //后面都是如此了,你需要的就是记下下面的类的成员有哪些,成员又有哪些函数

    QPalette   plet=ui->txtEdit->palette();
    if (ui->rBtnBlue->isChecked())
        plet.setColor(QPalette::Text,Qt::blue);
    else if (ui->rBtnRed->isChecked())
        plet.setColor(QPalette::Text,Qt::red);
    else if (ui->rBtnBlack->isChecked())
        plet.setColor(QPalette::Text,Qt::black);
    else
        plet.setColor(QPalette::Text,Qt::black);

    ui->txtEdit->setPalette(plet);
}


void QWDialog::on_chkBoxUnder_clicked(bool checked)
{//设置下划线
    QFont   font=ui->txtEdit->font();
    font.setUnderline(checked);
    ui->txtEdit->setFont(font);
}

void QWDialog::on_chkBoxItalic_clicked(bool checked)
{ //设置斜体
    QFont   font=ui->txtEdit->font();
    font.setItalic(checked);
    ui->txtEdit->setFont(font);
}

void QWDialog::on_chkBoxBold_clicked(bool checked)
{ //设置粗体
    QFont   font=ui->txtEdit->font();
    font.setBold(checked);
    ui->txtEdit->setFont(font);

}

运用Qt开发工具来实现一个记事本,用户图形界面操作,通过Qt提供的图形库来设计记事本的管理、应用基本窗口,主要实现打开、新建、保存、另存为、查找、居中、字体、颜色等功能设计,同时在软件内部实现对于这些功能的支持和实现。还有对用户剪切、复制、粘贴、等功能的支持 核心代码讲解 1、打开文件功能 void MainWindow::on_action_2_triggered() { QString filename = QFileDialog::getOpenFileName(this); loadFile(filename); } 打开文件on_action_2_triggered()通过转到槽实现首先定义一个Qstring类型的filename让它获取你文件名,其次寻找它的本地连接。 3、保存文件功能 void MainWindow::on_action_3_triggered() { if(isSaved){ saveFile(curFile); } else{ do_file_SaveAS(); } } 保存文件功能on_action_3_triggered()通过转到槽实现,先判断bool型的isSaved是否是正确的,如果错则保存当前文件,否则执行另存为。 5、关闭功能 void MainWindow::on_action_5_triggered() { if(close){ QMessageBox::information(this,"提示","文件尚未保存,关闭"); }else{ ui->textEdit->close(); } } 关闭功能on_action_5_triggered()先对文本进行判断是否是关闭的,如果是错弹出对话框提示消息文件尚未保存,关闭,否则对文档进行关闭 11、查找功能 //查找 void MainWindow::close_findhangshu() { ui->gridLayoutWidget->close(); } close_findhangshu()对查找对话框进行关闭函数。 void MainWindow::on_action_11_triggered() { QDialog *closefind=new QDialog(this); QDialog *findDlg=new QDialog(this); find_textLineEdit=new QLineEdit(findDlg); QPushButton *find_Bth=new QPushButton(tr("查找下一个"),findDlg); QPushButton *close_find=new QPushButton(tr("关闭"),closefind); ui->gridLayout->addWidget(find_textLineEdit); ui->gridLayout->addWidget(find_Bth); ui->gridLayout->addWidget(close_find); connect(find_Bth,SIGNAL(clicked()),this,SLOT(show_findText())); connect(close_find,SIGNAL(clicked()),this,SLOT(close_findhangshu())); } 查找功能on_action_11_triggered()函数通过转到槽实现下面部分:先定义两个QDialog类型 指针变量*closefind和*findDlg,对它们进行新创建空间, find_textLineEdit=new QLineEdit(findDlg);新建一个空间对QlineEdit它进行传参,将findDlg传入目的是查找在文档中对应的文字,QPushButton *find_Bth=new QPushButton(tr("查找下一个"),findDlg);QPushButton *close_find=new QPushButton(tr("关闭"),closefind);这两个代码作用相同定义两个Qpubutton当点击查找功能弹出对话框时在对话框中实现查找下一个和关闭connect(find_Bth,SIGNAL(clicked()),this,SLOT(show_findText()));connect(close_find,SIGNAL(clicked()),this,SLOT(close_findhangshu()));点击查找下一个按钮时对它进行连接,执行show_findText()函数中的查找操作,如果点击关闭执行上述所说的close_findhangshu()关闭对话框操作 void MainWindow:: show_findText() { QString findText=find_textLineEdit->text(); if(!ui->textEdit->find(findText,QTextDocument::FindBackward)) { QMessageBox::warning(this,tr("查找"),tr("找不到 %1").arg(findText)); } } show_findText()此函数先定义QString类型 findText值,对文本进行扫描,如果文本不能找到找到则提示找不到。 本人也只是一个学生,记得点赞哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁养浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值