QT:简易文本编辑器
效果

main.cpp 代码:
#include "imgprocessor.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont f("ZYSong18030",12);//设置显示字段格式
a.setFont(f);
ImgProcessor w;
w.show();
return a.exec();
}
imgprocessor.h 代码:
#ifndef IMGPROCESSOR_H
#define IMGPROCESSOR_H
#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QComboBox>
#include <QFontComboBox>
#include <QToolBar>
#include <QToolButton>
#include <QTextCharFormat>
#include <QTextStream>
#include <QPrinter>
#include <QPrintDialog>
#include <QTextDocument>
#include <QPainter>
#include "showwidget.h"
class ImgProcessor : public QMainWindow
{
Q_OBJECT
public:
ImgProcessor(QWidget *parent = nullptr);
~ImgProcessor();
void createActions();//创建动作
void createMenus();//创建菜单
void createToolBars();//创建工具栏
void loadFile(QString filename);
void mergeFormat(QTextCharFormat format);
protected slots:
void ShowNewFile(); // 新建文件
void ShowOpenFile(); // 打开文件
void ShowPrintText();// 打印文件
void ShowPrintImage(); //图像打印
void ShowZoomIn(); //放大
void ShowZoomOut(); // 缩小
void ShowRotate90(); //旋转90度
void ShowRotate180();//旋转180度
void ShowRotate270();//旋转270度
void ShowMirrorVertical(); // 纵向镜像
void ShowMirrorHorizontal();// 横向镜像
/* 文本相关:槽 */
void ShowFontComboBox(QString comboStr);
void ShowSizeSpinBox(QString spinValue);
void ShowBoldBtn();
void ShowItalicBtn();
void ShowUnderlineBtn();
void ShowColorBtn();
void ShowCurrentFormatChanged(const QTextCharFormat &fmt);
/* 排版功能 */
void ShowList(int );
void ShowAlignment(QAction *act);
void ShowCursorPositionChanged();
private:
QMenu *fileMenu; // 各项菜单栏
QMenu *zoomMenu;
QMenu *rotateMenu;
QMenu *mirrorMenu;
QImage img;
QString fileName;
ShowWidget *showWidget;
QAction *openFileAction; //文件菜单项
QAction *NewfileAction;
QAction *PrintTextAction;
QAction *PrintImageAction;
QAction *exitAction;
QAction *copyAction; //编辑菜单项
QAction *cutAction;
QAction *pasteAction;
QAction *aboutAction;
QAction *zoomInAction;
QAction *zoomOutAction;
QAction *rotate90Action; //旋转菜单项
QAction *rotate180Action;
QAction *rotate270Action;
QAction *mirrorVerticalAction; //镜像菜单项
QAction *mirrorHorizontalAction;
QAction *undoAction;
QAction *redoAction;
QToolBar *fileTool; //工具栏
QToolBar *zoomTool;
QToolBar *rotateTool;
QToolBar *mirrorTool;
QToolBar *doToolBar;
/* 文本相关工具 */
QLabel *fontLabel1;
QFontComboBox *fontComboBox;
QLabel *fontLabel2;
QComboBox *sizeComboBox;
QToolButton *boldBtn;
QToolButton *italicBtn;
QToolButton *underlineBtn;
QToolButton *colorBtn;
QToolBar *fontToolBar; // 字体工具栏
/* 排版功能 */
QLabel *listLabel; // 排序设置项
QComboBox *listComboBox;
QActionGroup *actGrp;
QAction *leftAction;
QAction *rightAction;
QAction *centerAction;
QAction *justifyAction;
QToolBar *listToolBar; // 排版工具
};
#endif // IMGPROCESSOR_H
imgprocessor.cpp 代码:
#include "imgprocessor.h"
#include <QFile>
#include <QTextStream>
#include <QFileDialog>
#include <QPrinter>
#include <QColor>
#include <QColorDialog>
#include <QTextBlock>
#include <QTextList>
ImgProcessor::ImgProcessor(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("Easy Word")); //设置窗体标题
showWidget = new ShowWidget(this);
setCentralWidget(showWidget);
// 在工具栏上嵌入控件
//设置字体 p143
fontLabel1 = new QLabel(tr("字体:"));
fontComboBox = new QFontComboBox;
fontComboBox->setFontFilters(QFontComboBox::ScalableFonts);
fontLabel2 = new QLabel(tr("字号:"));
sizeComboBox = new QComboBox;
QFontDatabase db;
foreach(int size ,db.standardSizes())
sizeComboBox->addItem(QString::number(size));
boldBtn = new QToolButton;
boldBtn->setIcon(QIcon("./images/bold.png"));
boldBtn->setCheckable(true);
italicBtn = new QToolButton;
italicBtn->setIcon(QIcon("./images/italic.png"));
italicBtn->setCheckable(true);
underlineBtn = new QToolButton;
underlineBtn->setIcon(QIcon("./images/underline.png"));
underlineBtn->setCheckable(true);
colorBtn = new QToolButton;
colorBtn->setIcon(QIcon("./images/color.png"));
colorBtn->setCheckable(true);
/* 排版功能 */
listLabel = new QLabel(tr("排序"));
listComboBox = new QComboBox;
listComboBox->addItem("QTextListFormat::ListDisc");
listComboBox->addItem("QTextListFormat::ListCircle");
listComboBox->addItem("QTextListFormat::ListSquare");
listComboBox->addItem("QTextListFormat::ListDecimal");
listComboBox->addItem("QTextListFormat::ListLowerAlpha");
listComboBox->addItem("QTextListFormat::ListUpperAlpa");
listComboBox->addItem("QTextListFormat::ListLowerRoman");
listComboBox->addItem("QTextListFormat::ListUpperRoman");
/*创建动作、菜单、工具栏的函数*/
createActions();
createMenus();
createToolBars();
if(img.load("image.png")){
// 在imageLabel对象中放置图片
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
//新建文件
connect(NewfileAction,SIGNAL(triggered()),this,SLOT(ShowNewFile()));
connect(openFileAction,SIGNAL(triggered()),this,SLOT(ShowOpenFile()));
connect(PrintTextAction,SIGNAL(triggered()),this,SLOT(ShowPrintText()));
connect(PrintImageAction,SIGNAL(triggered()),this,SLOT(ShowPrintImage()));
connect(zoomOutAction,SIGNAL(triggered()),this,SLOT(ShowZoomOut()));
connect(zoomInAction,SIGNAL(triggered()),this,SLOT(ShowZoomIn()));
connect(rotate90Action,SIGNAL(triggered()),this,SLOT(ShowRotate90()));
connect(rotate180Action,SIGNAL(triggered()),this,SLOT(ShowRotate180()));
connect(rotate270Action,SIGNAL(triggered()),this,SLOT(ShowRotate270()));
connect(mirrorHorizontalAction,SIGNAL(triggered()),this,SLOT(ShowMirrorHorizontal()));
connect(mirrorVerticalAction,SIGNAL(triggered()),this,SLOT(ShowMirrorVertical()));
/* 事件关联 */
connect(fontComboBox, SIGNAL(activated(QString)),this,SLOT(ShowFontComboBox(QString)));
connect(sizeComboBox, SIGNAL(activated(QString)),this,SLOT(ShowSizeSpinBox(QString)));
connect(boldBtn, SIGNAL(clicked()),this,SLOT(ShowboldBtn()));
connect(italicBtn, SIGNAL(clicked()),this,SLOT(ShowItalicBtn()));
connect(underlineBtn, SIGNAL(clicked()),this,SLOT(ShowUnderlineBtn()));
connect(colorBtn, SIGNAL(clicked()),this,SLOT(ShowColorBtn()));
connect(showWidget, SIGNAL(currentChartFormatChanged(QTextCharFormat&)),this,SLOT(ShowCurrentFormatChanged(QTextCharFormat&)));
/* 排版功能 */
connect(listComboBox, SIGNAL(activated(int)),this, SLOT(ShowList(int)));
connect(showWidget->text->document(), SIGNAL(undoAvailable(bool)),redoAction, SLOT(setEnabled(bool)));
connect(showWidget->text->document(), SIGNAL(redoAvailable(bool)),redoAction, SLOT(setEnabled(bool)));
connect(showWidget->text, SIGNAL(cursorPositionChanged()),this, SLOT(ShowCursorPositionChanged()));
}
ImgProcessor::~ImgProcessor()
{
}
void ImgProcessor::createActions()
{
//“打开” 动作
openFileAction = new QAction(QIcon("./images/open.png"),tr("打开"),this);
openFileAction->setShortcut(tr("Ctrl+O"));
openFileAction->setStatusTip(tr("打开一个文件"));
NewfileAction = new QAction(QIcon("./images/new.png"),tr("新建"),this);
NewfileAction->setShortcut(tr("Ctrl+N"));
NewfileAction->setStatusTip(tr("新建一个文件"));
exitAction= new QAction(QIcon("./images/exit.png"),tr("退出"),this);
exitAction->setShortcut(tr("Ctrl+Q"));
exitAction->setStatusTip(tr("退出程序"));
connect(exitAction,SIGNAL(triggered()),this,SLOT(close()));
copyAction = new QAction(QIcon("./images/copy.png"),tr("复制"),this);
copyAction->setShortcut(tr("Ctrl+C"));
copyAction->setStatusTip(tr("复制文件"));
connect(copyAction,SIGNAL(triggered()),showWidget->text,SLOT(copy()));
cutAction = new QAction(QIcon("./images/cut.png"),tr("剪切"),this);
cutAction->setShortcut(tr("Ctrl+X"));
cutAction->setStatusTip(tr("剪切文件"));
connect(cutAction,SIGNAL(triggered()),showWidget->text,SLOT(cut()));
pasteAction = new QAction(QIcon("./images/paste.png"),tr("粘贴"),this);
pasteAction->setShortcut(tr("Ctrl+V"));
pasteAction->setStatusTip(tr("粘贴文件"));
connect(pasteAction,SIGNAL(triggered()),showWidget->text,SLOT(paste()));
// ”“关于”“动作
aboutAction = new QAction(QIcon("./images/about.png"),tr("关于"),this);
connect(aboutAction, SIGNAL(triggered()),this, SLOT(QApplication::aboutQt()));
//打印文件 动作
PrintTextAction = new QAction(QIcon("./images/printText.png"),tr("打印文本"),this);
PrintTextAction->setStatusTip(tr("打印一个文本"));
//打印图片 动作
PrintImageAction = new QAction(QIcon("./images/printImage.png"),tr("打印图片"),this);
PrintImageAction->setStatusTip(tr("打印一幅图片"));
zoomInAction = new QAction(QIcon("./images/zoomIn.png"),tr("放大"),this);
zoomInAction->setStatusTip(tr("放大一幅图片"));
zoomOutAction = new QAction(QIcon("./images/zoomOut.png"),tr("缩小"),this);
zoomOutAction->setStatusTip(tr("缩小一幅图片"));
rotate90Action = new QAction(QIcon("./images/rotate90.png"),tr("旋转90度"),this);
rotate90Action->setStatusTip(tr("将一幅图片旋转90"));
rotate180Action = new QAction(QIcon("./images/rotate180.png"),tr("旋转180度"),this);
rotate180Action->setStatusTip(tr("将一幅图片旋转180"));
rotate270Action = new QAction(QIcon("./images/rotate270.png"),tr("旋转270度"),this);
rotate270Action->setStatusTip(tr("将一幅图片旋转270"));
mirrorVerticalAction = new QAction(QIcon("./images/mirrorVertical.png"),tr("纵向镜像"),this);
mirrorVerticalAction->setStatusTip(tr("对一幅图做纵向镜像"));
mirrorHorizontalAction = new QAction(QIcon("./images/mirrorHorizontal.png"),tr("横向镜像"),this);
mirrorHorizontalAction->setStatusTip(tr("对一幅图做横向镜像"));
undoAction = new QAction(QIcon("./images/undo.png"),tr("撤销"),this);
connect(undoAction,SIGNAL(triggered()),showWidget->text,SLOT(undo()));
redoAction = new QAction(QIcon("./images/redo.png"),tr("重做"),this);
connect(redoAction,SIGNAL(triggered()),showWidget->text,SLOT(redo()));
/* 排序: 左对齐、右对齐、居中和两端对齐 */
actGrp = new QActionGroup(this);
leftAction = new QAction(QIcon("./images/left.png"),"左对齐",actGrp);
leftAction->setCheckable(true);
rightAction = new QAction(QIcon("./images/right.png"),"右对齐",actGrp);
rightAction->setCheckable(true);
centerAction = new QAction(QIcon("./images/center.png"),"居中",actGrp);
centerAction->setCheckable(true);
justifyAction = new QAction(QIcon("./images/justify.png"),"两端对齐",actGrp);
justifyAction->setCheckable(true);
connect(actGrp,SIGNAL(triggered(QAction*)),this, SLOT(ShowAlignment(QAction*)));
}
void ImgProcessor::createMenus()
{ // 文件菜单
fileMenu = menuBar()->addMenu(tr("文件"));
fileMenu->addAction(openFileAction);
fileMenu->addAction(NewfileAction);
fileMenu->addAction(PrintTextAction);
fileMenu->addAction(PrintImageAction);
fileMenu->addSeparator();
fileMenu->addAction(exitAction);
// 缩放菜单
zoomMenu = menuBar()->addMenu(tr("编辑"));
zoomMenu->addAction(copyAction);
zoomMenu->addAction(cutAction);
zoomMenu->addAction(pasteAction);
zoomMenu->addAction(aboutAction);
zoomMenu->addSeparator();
zoomMenu->addAction(zoomInAction);
zoomMenu->addAction(zoomOutAction);
// 旋转菜单
rotateMenu = menuBar()->addMenu(tr("旋转"));
rotateMenu->addAction(rotate90Action);
rotateMenu->addAction(rotate180Action);
rotateMenu->addAction(rotate270Action);
// 镜像菜单
mirrorMenu = menuBar()->addMenu("镜像");
mirrorMenu->addAction(mirrorVerticalAction);
mirrorMenu->addAction(mirrorHorizontalAction);
}
void ImgProcessor::createToolBars()
{ // 文件工具条
fileTool = addToolBar("File");
fileTool->addAction(openFileAction);
fileTool->addAction(NewfileAction);
fileTool->addAction(PrintTextAction);
fileTool->addAction(PrintImageAction);
//编辑工具条
zoomTool = addToolBar("Edit");
zoomTool->addAction(copyAction);
zoomTool->addAction(cutAction);
zoomTool->addAction(pasteAction);
zoomTool->addSeparator();
zoomTool->addAction(zoomInAction);
zoomTool->addAction(zoomOutAction);
//旋转工具条
rotateTool = addToolBar("rotate");
rotateTool->addAction(rotate90Action);
rotateTool->addAction(rotate180Action);
rotateTool->addAction(rotate270Action);
//撤销和重做工具条
doToolBar = addToolBar("doEdit");
doToolBar->addAction(undoAction);
doToolBar->addAction(redoAction);
//字体工具条
fontToolBar = addToolBar("Font");
fontToolBar->addWidget(fontLabel1);
fontToolBar->addWidget(fontComboBox);
fontToolBar->addWidget(fontLabel2);
fontToolBar->addWidget(sizeComboBox);
fontToolBar->addSeparator();
fontToolBar->addWidget(boldBtn);
fontToolBar->addWidget(italicBtn);
fontToolBar->addWidget(underlineBtn);
fontToolBar->addSeparator();
fontToolBar->addWidget(colorBtn);
//排序工具条
listToolBar = addToolBar("list");
listToolBar->addWidget(listLabel);
listToolBar->addWidget(listComboBox);
listToolBar->addSeparator();
listToolBar->addActions(actGrp->actions());
}
void ImgProcessor::loadFile(QString filename)
{// 读取文件内容功能
printf("file Name:%s\n", (char*)filename.data());
QFile file(filename);
if(file.open(QIODevice::ReadOnly|QIODevice::Text)){
QTextStream textStream(&file);
while(!textStream.atEnd()){
showWidget->text->append(textStream.readLine());
printf("read line\n");
}
printf("end\n");
}
}
void ImgProcessor::ShowNewFile()
{// 新建文件功能
ImgProcessor *newImgProcessor = new ImgProcessor;
newImgProcessor->show();
}
void ImgProcessor::ShowOpenFile()
{// 打开文件功能
fileName = QFileDialog::getOpenFileName(this);
if(!fileName.isEmpty()){
if(showWidget->text->document()->isEmpty()){
loadFile(fileName);
}
else{
ImgProcessor *newImgProcessor = new ImgProcessor;
newImgProcessor->show();
newImgProcessor->loadFile(fileName);
}
}
}
void ImgProcessor::ShowPrintText()
{// 实现打印文本功能
QPrinter printer;
QPrintDialog printDialog(&printer,this);
if(printDialog.exec()){
// 获得QTextEdit对象的文档
QTextDocument *doc = showWidget->text->document();
doc->print(&printer);
}
}
void ImgProcessor::ShowPrintImage()
{// 实现打印图像功能
QPrinter printer; //新建一个QPainter对象
QPrintDialog printDialog(&printer, this);
if(printDialog.exec()){
QPainter painter(&printer);
QRect rect = painter.viewport();// 获得QPainter对象的视图矩形区域
QSize size = img.size();
/* 按照图形的比例大小重新设置视图矩形区域**/
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setWindow(img.rect()); // 设置QPainter窗口大小为图像的大小
painter.drawImage(0,0,img);// 打印图像
}
}
void ImgProcessor::ShowZoomIn()
{// 实现图形放大功能
if(img.isNull()){
return;
}
QMatrix matrix;
matrix.scale(2,2); //按照2倍比例对水平和垂直方向进行放大
img = img.transformed(matrix);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowZoomOut()
{// 实现图形缩小功能
if(img.isNull()){
return;
}
QMatrix matrix;
matrix.scale(0.5,0.5);//按照0.5倍比例对水平和垂直方向进行缩水
img = img.transformed(matrix);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowRotate90()
{// 旋转90度
if(img.isNull())
return;
QMatrix matrix;
matrix.rotate(90);
img=img.transformed(matrix);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowRotate180()
{// 旋转180度
if(img.isNull())
return;
QMatrix matrix;
matrix.rotate(180);
img=img.transformed(matrix);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowRotate270()
{// 旋转270度
if(img.isNull())
return;
QMatrix matrix;
matrix.rotate(270);
img=img.transformed(matrix);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowMirrorVertical()
{ // 图形的纵向镜像
if(img.isNull())
return;
img = img.mirrored(false,true);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowMirrorHorizontal()
{// 图形的横向镜像
if(img.isNull())
return;
img = img.mirrored(true,false);
showWidget->imageLabel->setPixmap(QPixmap::fromImage(img));
}
void ImgProcessor::ShowFontComboBox(QString comboStr)
{
QTextCharFormat fmt;
fmt.setFontFamily(comboStr);
mergeFormat(fmt);
}
void ImgProcessor::ShowSizeSpinBox(QString spinValue)
{
QTextCharFormat fmt;
fmt.setFontPointSize(spinValue.toFloat());
showWidget->text->mergeCurrentCharFormat(fmt);
}
void ImgProcessor::ShowBoldBtn()
{ // 设置粗体
QTextCharFormat fmt;
fmt.setFontWeight(boldBtn->isChecked()?QFont::Bold:QFont::Normal);
showWidget->text->mergeCurrentCharFormat(fmt);
}
void ImgProcessor::ShowItalicBtn()
{
QTextCharFormat fmt;
fmt.setFontItalic(italicBtn->isChecked());
showWidget->text->mergeCurrentCharFormat(fmt);
}
void ImgProcessor::ShowUnderlineBtn()
{
QTextCharFormat fmt;
fmt.setFontUnderline(underlineBtn->isChecked());
showWidget->text->mergeCurrentCharFormat(fmt);
}
void ImgProcessor::ShowColorBtn()
{
QColor color = QColorDialog::getColor(Qt::red,this);
if(color.isValid()){
QTextCharFormat fmt;
fmt.setForeground(color);
showWidget->text->mergeCurrentCharFormat(fmt);
}
}
void ImgProcessor::ShowCurrentFormatChanged(const QTextCharFormat &fmt)
{
fontComboBox->setCurrentIndex(fontComboBox->findText((fmt.fontFamily())));
sizeComboBox->setCurrentIndex(sizeComboBox->findText(QString::number(fmt.fontPointSize())));
boldBtn->setChecked(fmt.font().bold());
italicBtn->setChecked(fmt.fontItalic());
underlineBtn->setChecked(fmt.fontUnderline());
}
void ImgProcessor::ShowList(int index)
{
// 排序
QTextCursor cursor = showWidget->text->textCursor();
if(index!=0){
QTextListFormat::Style style = QTextListFormat::ListDisc;
switch(index){
case 1:
style = QTextListFormat::ListDisc;
break;
case 2:
style = QTextListFormat::ListCircle;
break;
case 3:
style = QTextListFormat::ListSquare;
break;
case 4:
style = QTextListFormat::ListDecimal;
break;
case 5:
style = QTextListFormat::ListLowerAlpha;
break;
case 6:
style = QTextListFormat::ListUpperAlpha;
break;
case 7:
style = QTextListFormat::ListLowerRoman;
break;
case 8:
style = QTextListFormat::ListUpperRoman;
break;
}
/* 设置缩进值 */
cursor.beginEditBlock();
QTextBlockFormat blockFmt = cursor.blockFormat();
QTextListFormat listFmt;
if(cursor.currentList()){
listFmt = cursor.currentList()->format();
}
else{
listFmt.setIndent(blockFmt.indent()+1);
blockFmt.setIndent(0);
cursor.setBlockFormat(blockFmt);
}
listFmt.setStyle(style);
cursor.createList(listFmt);
cursor.endEditBlock();
}
else{
QTextBlockFormat bfmt;
bfmt.setObjectIndex(-1);
cursor.mergeBlockFormat(bfmt);
}
}
void ImgProcessor::ShowAlignment(QAction *act)
{
// 段落对齐
if(act==leftAction)
showWidget->text->setAlignment(Qt::AlignLeft);
if(act==rightAction)
showWidget->text->setAlignment(Qt::AlignRight);
if(act==centerAction)
showWidget->text->setAlignment(Qt::AlignCenter);
if(act==justifyAction)
showWidget->text->setAlignment(Qt::AlignJustify);
}
void ImgProcessor::ShowCursorPositionChanged()
{
//响应文本中光标位置发生改变的信号
if(showWidget->text->alignment()==Qt::AlignLeft)
leftAction->setChecked(true);
if(showWidget->text->alignment()==Qt::AlignRight)
rightAction->setChecked(true);
if(showWidget->text->alignment()==Qt::AlignCenter)
centerAction->setChecked(true);
if(showWidget->text->alignment()==Qt::AlignJustify)
justifyAction->setChecked(true);
}
void ImgProcessor::mergeFormat(QTextCharFormat format)
{
QTextCursor cursor = showWidget->text->textCursor();
if(!cursor.hasSelection())
cursor.select(QTextCursor::WordUnderCursor);
cursor.mergeCharFormat(format);
showWidget->text->mergeCurrentCharFormat(format);
}
showwidget.h 代码:
#ifndef SHOWWIDGET_H
#define SHOWWIDGET_H
#include <QWidget>
#include <QImage>
#include <QLabel>
#include <QTextEdit>
#include <QHBoxLayout>
class ShowWidget : public QWidget
{
Q_OBJECT
public:
explicit ShowWidget(QWidget *parent = nullptr);
QImage img;
QLabel *imageLabel;
QTextEdit *text;
signals:
public slots:
};
#endif // SHOWWIDGET_H
showwidget.cpp代码
#include "showwidget.h"
ShowWidget::ShowWidget(QWidget *parent) : QWidget(parent)
{
imageLabel =new QLabel;
imageLabel->setScaledContents(true);
text = new QTextEdit;
QHBoxLayout *mainLayout = new QHBoxLayout(this);
mainLayout->addWidget(imageLabel);
mainLayout->addWidget(text);
}
在Qt5中,主窗体(MainWindow)是应用程序的核心组件,它通常承载着应用的主要功能和界面元素。在这个"文本编辑器"案例中,我们将深入探讨如何利用Qt5库来创建一个功能丰富的文本编辑器。Qt是一个跨平台的C++图形用户界面应用程序框架,提供了丰富的API来处理UI设计、事件处理以及与其他系统交互等功能。
优质生活从拆开始
浙公网安备 33010602011771号