目录
主界面预览菜单栏和状态栏设计设计中心窗口QTabWidgetQTextEditQStatusBar
功能设计新建文件打开文件保存文件打开新窗口打印文件打印预览定义槽函数打印预览
另存为PDF设置字体撤销 返回 复制 粘贴 剪贴 全选转
参考文献
主界面预览
微信公众号【编程学习基地】后台发送关键字NotePad获取源码
菜单栏和状态栏设计
仿照记事本的菜单栏进行设计,利用利用Designer设计UI界面万能的UI设计方案
设计中心窗口
QTabWidget
QTabWidget
*Tab
;
实例化对象
this
->Tab
= new
QTabWidget(this
);
this
->setCentralWidget(Tab
);
this
->Tab
->setMovable(true
);
this
->Tab
->setTabsClosable(true
);
QTextEdit
QList<QTextEdit*> EditList; /* 定义QList容器 */
实例化对象
QTextEdit
*newEdit
= new
QTextEdit();
EditList
.append(newEdit
);
this
->Tab
->addTab(newEdit
, filename
);
QStatusBar
QStatusBar
*stbar
;
QLabel
*lb_fileinfo
;
QLabel
*lb_time
;
QLabel
*lab_tmp
;
QLabel
*lab_tmp1
;
实例化对象
this
->stbar
= this
->statusBar();
this
->lb_fileinfo
= new
QLabel();
this
->lb_time
= new
QLabel();
this
->lab_tmp
= new
QLabel(" ");
this
->lab_tmp1
= new
QLabel(" ");
stbar
->addWidget(lb_fileinfo
);
stbar
->addWidget(lab_tmp
);
stbar
->addWidget(lab_tmp1
);
stbar
->addWidget(lb_time
);
功能设计
新建文件
QTextEdit
*newEdit
= new
QTextEdit();
this
->Tab
->addTab(newEdit
, filename
);
this
->Tab
->setCurrentIndex(ID
);
this
->ID
++;
this
->lb_fileinfo
->setText(filename
);
打开文件
QString openName
;
openName
= QFileDialog
::getOpenFileName(this
, "打开文件", "");
if(openName
.isEmpty()){
qDebug()<<"文件打开失败";
return;
}
qDebug()<<"打开文件成功";
QFile
file(openName
);
if (!file
.open(QIODevice
::ReadOnly
| QIODevice
::Text
)){
qDebug()<<file
.errorString();
return;
}
while (!file
.atEnd()) {
QByteArray line
= file
.readLine();
QString str
= QString(line
);
this
->EditList
.at(ID
- 1)->append(str
);
}
file
.close();
保存文件
QString saveFileName
= QFileDialog
::getSaveFileName(this
, "保存",QString("%1.txt").arg(ID
));
if(saveFileName
.isEmpty()){
qDebug()<<"文件保存失败";
return;
}
QString txt
= this
->EditList
.at(this
->Tab
->currentIndex())->toPlainText();
QFile
file(saveFileName
);
file
.open(QIODevice
::WriteOnly
|QIODevice
::Text
);
file
.write(txt
.toUtf8());
file
.close();
打开新窗口
MainWindow
* newWindow
= new MainWindow
;
newWindow
->show();
打印文件
QPrinter printer
(QPrinter
::HighResolution
);
QPrintDialog
*dlg
=new
QPrintDialog(&printer
,this
);
if(this
->EditList
.at(this
->Tab
->currentIndex())->textCursor().hasSelection())
{
dlg
->addEnabledOption(QAbstractPrintDialog
::PrintSelection
);
}
dlg
->setWindowTitle(tr("打印文档"));
if(dlg
->exec()==QDialog
::Accepted
)
{
this
->EditList
.at(this
->Tab
->currentIndex())->print(&printer
);
}
delete dlg
;
打印预览
定义槽函数
private slots
:
void printPreview(QPrinter
*);
打印预览
void MainWindow
::on_action_PrintPreview_triggered()
{
QPrinter
printer(QPrinter
::HighResolution
);
QPrintPreviewDialog
preview(&printer
, this
);
connect(&preview
, SIGNAL(paintRequested(QPrinter
*)), this
,SLOT(printPreview(QPrinter
*)));
preview
.exec();
}
void MainWindow
::printPreview(QPrinter
*printer
)
{
this
->EditList
.at(this
->Tab
->currentIndex())->print(printer
);
}
另存为PDF
QString saveFileName
= QFileDialog
::getSaveFileName(this
, "另存为PDF",QString("%1.pdf").arg(ID
));
if(saveFileName
.isEmpty()){
qDebug()<<"文件保存失败";
return;
}
QPrinter
printer(QPrinter
::HighResolution
);
printer
.setOutputFormat(QPrinter
::PdfFormat
);
printer
.setOutputFileName(saveFileName
);
this
->EditList
.at(this
->Tab
->currentIndex())->document()->print(&printer
);
设置字体
给所有QTextEdit对象统一设置字体
bool ok
;
QFont font
= QFontDialog
::getFont(&ok
, QFont("Consolas", 12), this
);
if (ok
) {
for(int i
=0;i
<EditList
.size();i
++)
{
EditList
.at(i
)->setFont(font
);
}
qDebug()<<"成功设置颜色";
} else {
qDebug()<<"颜色设置失败";
}
撤销 返回 复制 粘贴 剪贴 全选
QTextEdit
::undo();
QTextEdit
::redo();
QTextEdit
::copy();
QTextEdit
::paste();
QTextEdit
::cut();
QTextEdit
::selectAll();
转
QDesktopServices
::openUrl(QUrl(QLatin1String("https://blog.csdn.net/qq_44519484")));
参考文献
[1] Qt官方示例application
[2]Qt官方示例syntaxhighlighter