相关的代码;
首先是函数
1.旋钮函数 (槽函数都有说明)(Dial)
ui->dial->setRange(0,100);//设置旋钮的范围ui->dial->setValue(0);//设置旋钮目标的值
2. horizontalSlider 控件的函数 ()
ui->horizontalSlider->setRange(0,100);//设置范围ui->horizontalSlider->setValue(0);
3. lcdNumber 控件的函数
ui->lcdNumber->display(1);//设置为1ui->lcdNumber_2->display(2);//设置为 2
4. progressBar 控件的函数
ui->progressBar->setRange(0,100);ui->progressBar->setValue(0);
我写的小程序, Dial 值的改变 控制 progressBar , progressBar 值的改变控制 horizontalSlider
代码:
ui->dial->setRange(0,100);//设置范围ui->dial->setValue(0);//设置目标的值ui->horizontalSlider->setRange(0,100);//设置范围ui->horizontalSlider->setValue(0);ui->lcdNumber->display(1);//设置为1ui->lcdNumber_2->display(2);//设置为 2ui->progressBar->setRange(0,100);ui->progressBar->setValue(0);connect(ui->dial,SIGNAL(valueChanged(int)),ui->horizontalSlider,SLOT(setValue(int)));connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));
有哪些:
1. 颜色对话框
2.文字(字体大小,类型)对话框
3.文件对话框
4. 警告消息对话框 (warning)
5.提问消息对话框 (question )
6.选择信息对话框 (information )
7. 警告消息对话框 (critical)
8.关于消息对话框 (about )
9.输入消息对话框 ( getText)
10. 多行消息输入对话框 (getMultoLine )
11. 固定选项的消息选择对话框 (getLtem)
12.整数输入对话框 (getint)
13.浮点型数据输入对话框 (getDouble)
1. 颜色对话框
代码:
#include /*** 颜色对话框 ***/
void Widget::slot_pushButton_color()
{ui->lineEdit->setAutoFillBackground(true); /*** 设置自动背景颜色填充 ***//**** 获取 QLineEdit 的画板颜色 ****/QPalette palette = ui->lineEdit->palette();QColor color = palette.color(QPalette::Base); /*** 获取背景颜色 ***/color = QColorDialog::getColor(color); /*获取颜色对话框返回的 QColor */palette.setColor(QPalette::Base,color); //QPalette::Base背景颜色ui->lineEdit->setPalette(palette); //Palette 是父类的成员
}
别的方式,
2.文字(字体大小,类型)对话框
代码:
#include /** 字体对话框***/
void Widget::slot_pushButton_font()
{/***** 获取控件的字体样式 ****/QFont font = ui->lineEdit->font(); /*** 获取当前 字体的数据 **/bool ok = false;//假设现在没有获取成功 font = QFontDialog::getFont(&ok,font,this,"获取新的字体");if(ok == true)//获取成功 {ui->lineEdit->setFont(font);}
}
3.文件对话框
A 文件打开对话框
代码:
#include /*** 文件对话框 ***/
#include /*** 文件属性 ****/
//这个函数的作用就是 给出你在文件夹里面选择的文件的 路径 + 文件名字
void Widget::slot_pushButton_file_open()
{/**********************************************************************************************************函数原型:QString getOpenFileName(QWidget *parent = Q_NULLPTR,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = Q_NULLPTR,Options options = Options());*参数:* @parent : 父类指针* @caption: 标题* @dir : 默认打开的目录* @filter : 赛选 - 赛选格式 "名称1 (文件格式1 文件格式2) ;; 名称2 (文件格式3 文件格式4)"* "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"************************************************************************************************************/QString path_file = QFileDialog::getOpenFileName(this,"请选择要打开的文件","C:\\Users\\Administrator\\Pictures\\抗疫图片","图片 (*.jpeg *.png *.jpg) ;; 所有文件 (*.*)");ui->lineEdit->setText(path_file); /** 内容 在控件里面打印路径+ 文件名字 ***/ui->lineEdit_path->setText(QFileInfo(path_file).filePath()); /** 打印路径 ***/ui->lineEdit_filename->setText(QFileInfo(path_file).fileName()); /** 打印文件名 ***/}
B 文件保存对话框
代码:
#include /*** 文件对话框 ***/
#include /*** 文件属性 ****/
//这个函数就是为了 让你选择一个保存文件的地方,并且选择保存的文件类型(这个可以自己设置)
void Widget::slot_pushButton_file_save()
{/**********************************************************************************************************函数原型:QString getSaveFileName(QWidget *parent = Q_NULLPTR,const QString &caption = QString(),const QString &dir = QString(),const QString &filter = QString(),QString *selectedFilter = Q_NULLPTR,Options options = Options());*参数:* @parent : 父类指针* @caption: 标题* @dir : 默认打开的目录* @filter : 赛选 - 赛选格式 "名称1 (文件格式1 文件格式2) ;; 名称2 (文件格式3 文件格式4)"* "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"************************************************************************************************************/QString path_file = QFileDialog::getSaveFileName(this,"请选择要保存的路径","C:\\Users\\Administrator\\Pictures\\抗疫图片","C语言 (*.c) ;; C++ (*.cpp) ;; 头文件 (*.h)");ui->lineEdit->setText(path_file); /** 打印保存的路径+ 文件名字 内容 ***/ui->lineEdit_path->setText(QFileInfo(path_file).filePath()); /** 打印 路径 ***/ui->lineEdit_filename->setText(QFileInfo(path_file).fileName()); /** 打印 文件名 ***/
}
C 文件目录对话框
代码:
#include /*** 文件对话框 ***/
#include /*** 文件属性 ****/
//获取文件的路径
void Widget::slot_pushButton_dir()
{/**********************************************************************************************************函数原型:QString getExistingDirectory(QWidget *parent = Q_NULLPTR,const QString &caption = QString(),const QString &dir = QString(),Options options = ShowDirsOnly);*参数:* @parent : 父类指针* @caption: 标题* @dir : 默认打开的目录************************************************************************************************************/QString path_file = QFileDialog::getExistingDirectory(this,"请选择目录","C:\\Users\\Administrator\\Pictures\\抗疫图片");if(path_file.isEmpty() == false){ui->lineEdit->setText(path_file); /** 内容 ***/ui->lineEdit_path->setText(QFileInfo(path_file).filePath()); /** 路径 ***/ui->lineEdit_filename->setText(QFileInfo(path_file).fileName()); /** 文件名 ***/}
}
4. 警告消息对话框 (warning)
函数: QMessageBox:: warning (父类指针 , 窗口名字,第一个按钮的文字,第二个按钮的文字)
代码:
#include /*** 消息对话框 ***/
void Widget::slot_pushButton_warning()
{int button = QMessageBox::warning(this,"错误警告","密码错误,请重新输入","确认重新输入","不输入直接退出");switch(button){case 0 :ui->lineEdit->setText("确认重新输入");ui->lineEdit_filename->clear();break;case 1:this->close(); /** 直接关闭 **/break;}
}
5.提问消息对话框 (question )
函数: QMessageBox::question( 父类指针, 窗口名字,提问的内容, 选项1,选项2);
代码:
#include /*** 消息对话框 ***/
void Widget::slot_pushButton_question()
{int button = QMessageBox::question(this,"提问窗体","王老师帅么?",QMessageBox::Yes,QMessageBox::No);switch(button){case QMessageBox::Yes: ui->lineEdit->setText("王老师帅");case QMessageBox::No: ui->lineEdit->setText("王老师帅");}
}
6.选择信息对话框 (information )
函数 :QMessageBox::information ( 指针, 窗口的名字, 提示内容, 选项 1 | 选项2 )
#include /*** 消息对话框 ***/
void Widget::slot_pushButton_information()
{int button = QMessageBox::information(this,"王老师帅不帅","请选择",QMessageBox::Yes);switch(button){case QMessageBox::Yes: ui->lineEdit->setText("王老师帅");case QMessageBox::No: ui->lineEdit->setText("王老师帅");}
}
7. 警告消息对话框 (critical)
函数: QMessageBox::critical (指针, 窗口提示,中间的提示内容,选项1,选项2)
代码:
#include /*** 消息对话框 ***/
void Widget::slot_pushButton_critical()
{int button = QMessageBox::critical(this,"内存泄露危险","内存泄露了,是否继续操作","继续操作","取消操作");switch(button){case 0:ui->lineEdit->setText(QString::number(button) + "继续操作"); break;case 1:ui->lineEdit->setText(QString::number(button) + "取消操作"); break;}
}
8.关于消息对话框 (about )
函数: QMessageBox::about(指针,窗口提示内容)
代码:
#include /*** 消息对话框 ***/
void Widget::slot_pushButton_aboutQt()
{QMessageBox::aboutQt(this,"关于王老师使用的Qt");
}
9.输入消息对话框 ( getText)
函数:QInputDialog::getText(指针,窗口的名字,提示的内容);
代码:
#include /*** 输入对话框 ****/
void Widget::slot_pushButton_text_input()
{QString text = QInputDialog::getText(this,"获取内容","请输入内容");if(text.isEmpty() == false){ui->lineEdit->setText(text);}
}
10. 多行消息输入对话框 (getMultoLine )
函数:QInputDialog::getMultoLine (指针, 窗口的名字,提示语句,写一些文字 在要写在内容的地方, 指示变量(判断是否获取成功!就是是否按下 OK));
代码:
#include /*** 输入对话框 ****/
void Widget::slot_pushButton_miulineinput()
{/***************************************************************************************************** 函数名:QString getMultiLineText(QWidget *parent, const QString &title, const QString &label,const QString &text = QString(), bool *ok = Q_NULLPTR,Qt::WindowFlags flags = Qt::WindowFlags(),参数:@parent : 父对象指针@title : 标题@label : 提示信息@text : 默认内容@ok : 是否点击确定按钮@flags : 窗口样式返回:一个QString字符串类型* *************************************************************************************************/bool ok = false;QString text = QInputDialog::getMultiLineText(this,"获取多行文字","请输入内容:","啥也不是",&ok);if(ok == true){ui->lineEdit->setText(text);}
}
11. 固定选项的消息选择对话框 (getLtem)
函数:QInputDialog::getItem (指针,窗口名字,提示语句,之前写入选择列表的 QStringList 变量, 开始显示的东西 (第一眼看见的内容), (0,自由工作者, 1 老师。。。。。。。。。。)
,false (窗口式样),(OK) 提示变量)
代码:
#include /*** 输入对话框 ****/
void Widget::slot_pushButton_item_input()
{/***************************************************************************************************** 函数名:QString getItem(QWidget *parent, const QString &title, const QString &label,const QStringList &items, int current = 0, bool editable = true,bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone);参数:@parent : 父对象指针@title : 标题@label : 提示信息@QStringList : 字符串列表中存放的是要选择的项@current: 当前选择项下标@editable:是否支持编辑@ok : 是否点击确定按钮@flags : 窗口样式返回:一个QString字符串类型* *************************************************************************************************/bool ok = false;QStringList jobs;jobs << "自由工作者" << "老师" << "学生" << "躺平大道";QString job = QInputDialog::getItem(this,"职业选择","王老师温馨提示-请选择您的职业:",jobs,2,false,&ok);if(ok == true){ui->lineEdit->setText(QString("职业:") + job);}
}
12.整数输入对话框 (getint)
函数说明代码里面有 (我懒)
代码:
void Widget::slot_pushButton_int_input()
{/***************************************************************************************************** 函数名:int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0,int minValue = -2147483647, int maxValue = 2147483647,int step = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags());参数:@parent : 父对象指针@title : 标题@label : 提示信息@value : 默认当前值@minValue:最小值范围@maxValue:最大值范围@step:步长@ok : 是否点击确定按钮@flags : 窗口样式返回:一个整数类型* *************************************************************************************************/bool ok = false;int num_int = QInputDialog::getInt(this,"王老师的整数获取","王老师提示-请输入一个整数:",20,0,999,50,&ok);if(ok == true){ui->lineEdit->setText(QString::number(num_int));}
}
13.浮点型数据输入对话框 (getDouble)
代码:
#include /*** 输入对话框 ****/
void Widget::slot_pushButton_double_input()
{/************************************************************************************************** 函数名:double getDouble(QWidget *parent, const QString &title, const QString &label, double value = 0,double minValue = -2147483647, double maxValue = 2147483647,int decimals = 1, bool *ok = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags());参数:@parent : 父对象指针@title : 标题@label : 提示信息@value : 默认当前值@minValue:最小值范围@maxValue:最大值范围@decimals:小数位数@ok : 是否点击确定按钮@flags : 窗口样式返回一个浮点类型:**************************************************************************************************/bool ok = false;double num_double = QInputDialog::getDouble(this,"获取王老师的浮点","王老师提示-请输入一个浮点数",50.6,0,100,3,&ok);if(ok == true){ui->lineEdit->setText(QString::number(num_double));}
}
头文件:
#include
#include
#include
写入文件:
1. 找到文件保存的路径。 path (路径)
2. 实例化文件对象 QFile file(path);
3. 打开文件 file.open(QIODevice::Truncate | QIODevice:: ReadWrite); //没有文件创建,可读可写
4.向文件写入内容 file.write
5.关闭文件
代码:
#include
void TextEditor::slot_action_save()
{int index = ui->tabWidget->currentIndex();QTextEdit *TextEdit = (QTextEdit *)ui->tabWidget->currentWidget();if(index >= 0){QFile file(FilePath_list[index]); /** 实例化文件类对象 ***/qDebug() << "保存路径:" << FilePath_list[index] << endl;if (!file.open(QIODevice::Truncate | QIODevice::ReadWrite)) /*** 打开文件 **/{return;}//QString text = TextEdit->toHtml();QString text = TextEdit->toPlainText();file.write(text.toUtf8());file.close();}
}
读取文件:
1. 找到文件保存的路径。 path (路径)
2. 实例化文件对象 QFile file(path);
3. 打开文件 file.open(QIODevice::ReadOnly | QIODevice::Text); //可读
4.向文件写入内容 file.readLine();
5.关闭文件
代码:
#include
void TextEditor::slot_action_open()
{
//确定文件的路径QString fileName = QFileDialog::getOpenFileName(this,"打开文件",".","C文件 (*.c) ;; C++文件 (*.cpp) ;; 头文件 (*.h) ;; 所有文件 (*.*)");//这里不要管int index = FilePath_list.indexOf(fileName);if(index != -1){ui->tabWidget->setCurrentIndex(index);return ;}//if(fileName.isEmpty() == false){QTextEdit *TextEdit = new QTextEdit;qDebug() << "地址:" << TextEdit << endl;ui->tabWidget->addTab(TextEdit,QFileInfo(fileName).fileName());FilePath_list.push_back(QFileInfo(fileName).filePath()); /*** 同步添加到 文件列表中,方便后续操作 ****//***** TextEdit 内容发生改变,则状态栏的字数改变 ****/connect(TextEdit,SIGNAL(textChanged()),this,SLOT(slot_TextEdit()));/***** 将文件内容读取到 TextEdit 控件中 *******/QFile file(fileName);if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return;while (!file.atEnd()) {QByteArray line = file.readLine();TextEdit->append(line);}file.close();}
}
开始的ui 设计界面
1. 代码添加菜单
代码: (因为没有这些图片,所以显示的 名字之前没有图标 )
QAction *Action_backout = ui->menu_edit->addAction(QIcon(":/文件编辑操作/chexiao.png"),"撤销");QAction *Action_redo = ui->menu_edit->addAction(QIcon(":/文件编辑操作/zhongzuo.png"),"重做");QAction *Action_copy = ui->menu_edit->addAction(QIcon(":/文件编辑操作/fuzhi.png"),"复制");QAction *Action_cut = ui->menu_edit->addAction(QIcon(":/文件编辑操作/jianqie.png"),"剪切");QAction *Action_paste = ui->menu_edit->addAction(QIcon(":/文件编辑操作/jurassic_paste_text.png"),"粘贴");QAction *Action_font = ui->menu_edit->addAction(QIcon(":/文件编辑操作/zitidaxiao.png"),"字体");QAction *Action_color = ui->menu_edit->addAction(QIcon(":/文件编辑操作/jurassic_font-color.png"),"颜色");QMenu *menu_add = ui->menu_edit->addMenu(QIcon(":/文件编辑操作/zengjia.png"),"增加");QAction *Action_Image = menu_add->addAction(QIcon(":/文件编辑操作/tupian.png"),"图片");QAction *Action_table = menu_add->addAction(QIcon(":/文件编辑操作/fsux_tubiao_biaoge.png"),"表格");
之后的样子
2. 代码添加工具栏
代码:
/****** 代码添加工具栏 *******/QToolBar *Tool_Edit_Bar = this->addToolBar("编辑工具栏");Tool_Edit_Bar->addAction(Action_backout);Tool_Edit_Bar->addAction(Action_redo);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_copy);Tool_Edit_Bar->addAction(Action_cut);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_paste);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_Image);Tool_Edit_Bar->addAction(Action_table);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_font);Tool_Edit_Bar->addAction(Action_color);
之后的图片
3. 代码增加中央部件
代码:
/****** 代码增加中央部件 ******/// QPushButton *button = new QPushButton("哈哈");// this->setCentralWidget(button); /*** 设置中央部件 ***/
之后的图片
4. 状态栏
代码:
ui->statusBar->addWidget(new QLabel("状态栏:"));ui->statusBar->addPermanentWidget(new QLabel("当前字数:"));QLabel * label_num = new QLabel("0个");ui->statusBar->addPermanentWidget(label_num);
之后的图片
还有一些函数
(这里的对象 好像是界面里面,被鼠标包括的文字!!)
QTabWidget的每个选项卡都有一个对应的页面部件对象,可用通过currentWidget方法和widget方法来访问该页面部件对象。
所有的代码,自己看
texteditor.h
#ifndef TEXTEDITOR_H
#define TEXTEDITOR_H#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui { class TextEditor; }
QT_END_NAMESPACEclass TextEditor : public QMainWindow
{Q_OBJECTpublic:TextEditor(QWidget *parent = nullptr);~TextEditor();private:Ui::TextEditor *ui;QStringList FilePath_list; /*** 存放文件路径的表 ***/QLabel *label_num;
public slots:void slot_action_new();void slot_TextEdit();void slot_Action_copy();void slot_Action_cut();void slot_Action_paste();void slot_Action_backout();void slot_Action_redo();void slot_Action_font();void slot_Action_color();void slot_Action_Image();void slot_Action_table();void slot_action_save();void slot_action_open();
};
#endif // TEXTEDITOR_H
texteditor.cpp
#include "texteditor.h"
#include "ui_texteditor.h"
#include
#include
#include
#include
#include /*** 文本编辑框 ***/
#include
#include
TextEditor::TextEditor(QWidget *parent): QMainWindow(parent), ui(new Ui::TextEditor)
{ui->setupUi(this);/******* 代码添加菜单 ******/QAction *Action_backout = ui->menu_edit->addAction(QIcon(":/文件编辑操作/chexiao.png"),"撤销");QAction *Action_redo = ui->menu_edit->addAction(QIcon(":/文件编辑操作/zhongzuo.png"),"重做");QAction *Action_copy = ui->menu_edit->addAction(QIcon(":/文件编辑操作/fuzhi.png"),"复制");QAction *Action_cut = ui->menu_edit->addAction(QIcon(":/文件编辑操作/jianqie.png"),"剪切");QAction *Action_paste = ui->menu_edit->addAction(QIcon(":/文件编辑操作/jurassic_paste_text.png"),"粘贴");QAction *Action_font = ui->menu_edit->addAction(QIcon(":/文件编辑操作/zitidaxiao.png"),"字体");QAction *Action_color = ui->menu_edit->addAction(QIcon(":/文件编辑操作/jurassic_font-color.png"),"颜色");QMenu *menu_add = ui->menu_edit->addMenu(QIcon(":/文件编辑操作/zengjia.png"),"增加");QAction *Action_Image = menu_add->addAction(QIcon(":/文件编辑操作/tupian.png"),"图片");QAction *Action_table = menu_add->addAction(QIcon(":/文件编辑操作/fsux_tubiao_biaoge.png"),"表格");/****** 代码添加工具栏 *******/QToolBar *Tool_Edit_Bar = this->addToolBar("编辑工具栏");Tool_Edit_Bar->addAction(Action_backout);Tool_Edit_Bar->addAction(Action_redo);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_copy);Tool_Edit_Bar->addAction(Action_cut);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_paste);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_Image);Tool_Edit_Bar->addAction(Action_table);Tool_Edit_Bar->addSeparator();Tool_Edit_Bar->addAction(Action_font);Tool_Edit_Bar->addAction(Action_color);/****** 代码增加中央部件 ******/// QPushButton *button = new QPushButton("哈哈");// this->setCentralWidget(button); /*** 设置中央部件 ***//****** 状态栏 **************** addWidget() 左边添加控件* addPermanentWidget() 右边添加控件* ************************/ui->statusbar->addWidget(new QLabel("状态栏:"));ui->statusbar->addPermanentWidget(new QLabel("当前字数:"));label_num = new QLabel("0个");ui->statusbar->addPermanentWidget(label_num);/**************** 链接信号槽 ***********************/connect(ui->action_new,SIGNAL(triggered(bool)),this,SLOT(slot_action_new()));connect(Action_copy,SIGNAL(triggered(bool)),this,SLOT(slot_Action_copy()));connect(Action_cut,SIGNAL(triggered(bool)),this,SLOT(slot_Action_cut()));connect(Action_paste,SIGNAL(triggered(bool)),this,SLOT(slot_Action_paste()));connect(Action_backout,SIGNAL(triggered(bool)),this,SLOT(slot_Action_backout()));connect(Action_redo,SIGNAL(triggered(bool)),this,SLOT(slot_Action_redo()));connect(Action_font,SIGNAL(triggered(bool)),this,SLOT(slot_Action_font()));connect(Action_color,SIGNAL(triggered(bool)),this,SLOT(slot_Action_color()));connect(Action_Image,SIGNAL(triggered(bool)),this,SLOT(slot_Action_Image()));connect(Action_table,SIGNAL(triggered(bool)),this,SLOT(slot_Action_table()));connect(ui->action_save,SIGNAL(triggered(bool)),this,SLOT(slot_action_save()));connect(ui->action_open,SIGNAL(triggered(bool)),this,SLOT(slot_action_open()));;;;;;;;;;;;;;;;;;;;;;;;;
}#include
void TextEditor::slot_action_save()
{int index = ui->tabWidget->currentIndex();QTextEdit *TextEdit = (QTextEdit *)ui->tabWidget->currentWidget();if(index >= 0){QFile file(FilePath_list[index]); /** 实例化文件类对象 ***/qDebug() << "保存路径:" << FilePath_list[index] << endl;if (!file.open(QIODevice::Truncate | QIODevice::ReadWrite)) /*** 打开文件 **/{return;}//QString text = TextEdit->toHtml();QString text = TextEdit->toPlainText();file.write(text.toUtf8());file.close();}
}#include
void TextEditor::slot_action_open()
{QString fileName = QFileDialog::getOpenFileName(this,"打开文件",".","C文件 (*.c) ;; C++文件 (*.cpp) ;; 头文件 (*.h) ;; 所有文件 (*.*)");int index = FilePath_list.indexOf(fileName);if(index != -1){ui->tabWidget->setCurrentIndex(index);return ;}if(fileName.isEmpty() == false){QTextEdit *TextEdit = new QTextEdit;qDebug() << "地址:" << TextEdit << endl;ui->tabWidget->addTab(TextEdit,QFileInfo(fileName).fileName());FilePath_list.push_back(QFileInfo(fileName).filePath()); /*** 同步添加到 文件列表中,方便后续操作 ****//***** TextEdit 内容发生改变,则状态栏的字数改变 ****/connect(TextEdit,SIGNAL(textChanged()),this,SLOT(slot_TextEdit()));/***** 将文件内容读取到 TextEdit 控件中 *******/QFile file(fileName);if (!file.open(QIODevice::ReadOnly | QIODevice::Text))return;while (!file.atEnd()) {QByteArray line = file.readLine();TextEdit->append(line);}file.close();}
}#include /*** 文件对话框 ***/
void TextEditor::slot_Action_Image()
{/**** 获取 QTExtEdit 的当前这字体 ****/QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget; /*** 强制转换回 QTextEdit* 指针.方便使用 ***//**** 获取当前光标位置 ***/QTextCursor TextCursor = TextEdit->textCursor();QString file_name = QFileDialog::getOpenFileName(this,"选择图片","C:\\Users\\Administrator\\Pictures","图片 (*.jpeg *.jpg *.png) ;; 所有文件 (*.*)");if(file_name.isEmpty() == false){TextCursor.insertImage(QImage(file_name));}}
}#include /*** 标准输入对话框 ***/
#include
void TextEditor::slot_Action_table()
{/**** 获取 QTExtEdit 的当前这字体 ****/QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget; /*** 强制转换回 QTextEdit* 指针.方便使用 ***//**** 获取当前光标位置 ***/QTextCursor TextCursor = TextEdit->textCursor();bool ok = false;int row = QInputDialog::getInt(this,"输入表格行","请输入表格行",0,0,1000000,5,&ok);if(ok == true){int lount = QInputDialog::getInt(this,"输入表格列","请输入表格列",0,0,1000000,5,&ok);if(ok == true){QTextTable *TextTable = TextCursor.insertTable(row,lount);TextTable->mergeCells(0, 0, 1, 2);}}}
}#include /** 颜色对话框 ***/
void TextEditor::slot_Action_color()
{/**** 获取 QTExtEdit 的当前这字体 ****/QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget; /*** 强制转换回 QTextEdit* 指针.方便使用 ***/QColor color = TextEdit->textColor(); /*** 获取当前字体颜色 ***/QColor color_temp = QColorDialog::getColor(color,this,"获取颜色");if(color_temp.isValid() == true) /** 判断颜色是否有效,因为颜色对话框没有预留点击确定通知 ***/{
#if 1 /** 前景色,字体颜色 ***/TextEdit->setTextColor(color_temp);
#endif
#if 0 /**** 背景块颜色 ****/QTextCursor TextCursor = TextEdit->textCursor();QTextBlockFormat TextBlockFormat = TextCursor.blockFormat();TextBlockFormat.setBackground(QBrush(color_temp));TextCursor.setBlockFormat(TextBlockFormat);
#endif
#if 0 /**** 整个背景 ****/TextEdit->setAutoFillBackground(true);QPalette palette = TextEdit->palette();palette.setColor(QPalette::Base,color_temp);TextEdit->setPalette(palette);
#endif}}
}#include /*** 字体对话框 ***/
void TextEditor::slot_Action_font()
{/**** 获取 QTExtEdit 的当前这字体 ****/QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget; /*** 强制转换回 QTextEdit* 指针.方便使用 ***/QFont font = TextEdit->currentFont(); /*** 获取QTextEdit当前选中文字的字体 ***/bool ok = false;font = QFontDialog::getFont(&ok,font,this,"获取字体"); /*** 通过字体对话框获取用户选择的字体 ***/if(ok == true){TextEdit->setCurrentFont(font); /*** 将字体设置到 QTextEidt 当前选中的文字上 ***/}}
}void TextEditor::slot_Action_redo()
{QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget;TextEdit->redo(); /*** 重做上一个操作 ***/}
}void TextEditor::slot_Action_backout()
{QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget;TextEdit->undo(); /*** 撤销上一个操作 ***/}
}void TextEditor::slot_Action_paste()
{QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget;TextEdit->paste(); /*** 粘贴 ***/}
}void TextEditor::slot_Action_cut()
{QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget;TextEdit->cut(); /*** 剪切 ***/}
}void TextEditor::slot_Action_copy()
{QWidget *widget = ui->tabWidget->currentWidget();if(widget != NULL){QTextEdit *TextEdit = (QTextEdit *)widget;TextEdit->copy(); /*** 复制 ***/}
}#include
#include
#include /*** 文本编辑框 ***/
#include
void TextEditor::slot_action_new()
{QString fileName = QFileDialog::getSaveFileName(this,"新建文件",".","C文件 (*.c) ;; C++文件 (*.cpp) ;; 头文件 (*.h) ;; 所有文件 (*.*)");if(fileName.isEmpty() == false){QTextEdit *TextEdit = new QTextEdit;qDebug() << "地址:" << TextEdit << endl;ui->tabWidget->addTab(TextEdit,QFileInfo(fileName).fileName());FilePath_list.push_back(QFileInfo(fileName).filePath()); /*** 同步添加到 文件列表中,方便后续操作 ****//***** TextEdit 内容发生改变,则状态栏的字数改变 ****/connect(TextEdit,SIGNAL(textChanged()),this,SLOT(slot_TextEdit()));}
}/***** 信号槽: 发送者 *********************** 发送者对象指针 : QObject *sender() const* ***************************************/
void TextEditor::slot_TextEdit()
{//qDebug() << "地址:" << sender() << endl;QTextEdit *sender_TextEdit = (QTextEdit *)sender();/********* 转换回来 ***************/int num = sender_TextEdit->toPlainText().size();label_num->setText(QString::number(num) + " 字");
}TextEditor::~TextEditor()
{delete ui;
}