#include "mywidget.h"
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
# pragma execution_character_set("utf-8")
#endif
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
//创建工具栏
this->setGeometry(350,200,600,405);//设置窗体大小、位置
setWindowTitle("电子书阅读器");
setWindowIcon(QIcon(":/images/rbook.png"));
QToolBar *tbar =new QToolBar(this);
tbar->setMovable(false);//工具栏不可移动
tbar->setIconSize(QSize(20, 20));//设置动作图标的尺寸
tbar->setStyleSheet("background-color:rgb(199,237,204)");//背景色
Display = new QTextEdit(this);
Display->setReadOnly(true);
Display->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);//自动换行
//布局(纵向)
//设置文字行间距
Display->setMaximumHeight(335);
Rmenu = new QMenu(this);//创建右键菜单
Rmenu->addAction(tr("保存 \tCtrl+S"), this, SLOT(SavePic()));//添加菜单动作
Rmenu->addAction(tr("退出 \tALT+F4"), this, SLOT(close()));//添加菜单动作
Rmenu->setStyleSheet("background-color:rgb(199,237,204)");//设置背景色
openAction = new QAction(tr("&打开"), this);//打开动作
openAction->setIcon(QIcon(":/images/open.png"));//图标
openAction->setShortcut(QKeySequence(tr("Ctrl+O")));//热键
tbar->addAction(openAction);//添加到工具栏
tbar->addSeparator(); //添加分割线
fonts = new QAction(tr("&字体"), this);//字体动作
fonts->setIcon(QIcon(":/images/fonts.png"));//图标
fonts->setShortcut(QKeySequence(tr("Ctrl+T")));//热键
tbar->addAction(fonts);//添加到工具栏
bookmark = new QAction(tr("&添加书签"), this);//添加书签
bookmark->setIcon(QIcon(":/images/bookmarks.png"));//图标
tbar->addAction(bookmark);//添加到工具栏
tbar->addAction(" ");//添加到工具栏 设置间隔
previous = new QAction(tr("&上一页"), this);//上一页
previous->setIcon(QIcon(":/images/previous.png"));//图标
tbar->addAction(previous);//添加到工具栏
tbar->addAction(" ");//添加到工具栏 设置间隔
nextd = new QAction(tr("&下一页"), this);//下一页
nextd->setIcon(QIcon(":/images/next.png"));//图标
tbar->addAction(nextd);//添加到工具栏
tbar->addAction(" ");//添加到工具栏 设置间隔
enlarges = new QAction(tr("&放大"), this);//放大
enlarges->setIcon(QIcon(":/images/enlarge.png"));//图标
enlarges->setShortcut(QKeySequence(tr("Ctrl+U")));//热键
tbar->addAction(enlarges);//添加到工具栏
narrow = new QAction(tr("&缩小"), this);//缩小
narrow->setIcon(QIcon(":/images/narrow.png"));//图标
narrow->setShortcut(QKeySequence(tr("Ctrl+D")));//热键
tbar->addAction(narrow);//添加到工具栏
tbar->addAction(" ");//添加到工具栏 设置间隔
clearbook = new QAction(tr("&清空书签"), this);//清空书签
clearbook->setIcon(QIcon(":/images/clear.png"));//图标
tbar->addAction(clearbook);//添加到工具栏
fontcolor = new QAction(tr("&字体颜色"), this);//字体颜色
fontcolor->setIcon(QIcon(":/images/fontcolor.png"));//图标
tbar->addAction(fontcolor);//添加到工具栏
closefile = new QAction(tr("&关闭电子书"), this);//关闭电子书
closefile->setIcon(QIcon(":/images/closefile.png"));//图标
tbar->addAction(closefile);//添加到工具栏
tbar->addAction(" ");//添加到工具栏 设置间隔
booklist = new QAction(tr("&书签列表"), this);//书签列表
booklist->setIcon(QIcon(":/images/booklist1.png"));//图标
tbar->addAction(booklist);//添加到工具栏
QWidget* spacer= new QWidget();
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
tbar->addWidget(spacer);
bookmarklist=new QComboBox(spacer); //设置书签下拉列表
spacer->setFixedHeight(20);
connect(openAction, &QAction::triggered, this, &MyWidget::openBook); //打开电子书
connect(closefile, &QAction::triggered, this, &MyWidget::closeBook); //关闭电子书
connect(fonts, &QAction::triggered,this,&MyWidget::setwType); //设置字体
connect(fontcolor,&QAction::triggered,this,&MyWidget::setColor); //设置字体颜色
connect(enlarges,&QAction::triggered,this,&MyWidget::texplus); //设置文本放大
connect(narrow,&QAction::triggered,this,&MyWidget::reduce); //设置文本减小
connect(previous,&QAction::triggered,this,&MyWidget::previousu); //下一页
connect(nextd,&QAction::triggered,this,&MyWidget::nextp); //上一页
connect(bookmark,&QAction::triggered,this,&MyWidget::saveMark); //保存书签
connect(booklist,&QAction::triggered,this,&MyWidget::openmark); //打开书签
connect(clearbook,&QAction::triggered,this,&MyWidget::clearmark); //清空书签
valtime=new QLabel(this); //显示时间栏
QVBoxLayout *v = new QVBoxLayout();
v->addWidget(tbar);
v->addWidget(Display);
v->addWidget(valtime);
this->setLayout(v);
//没打开文件前,全部失能
fonts->setEnabled(false); //字体设置失能
bookmark->setEnabled(false); //添加书签失能
previous->setEnabled(false); //上一页失能
nextd->setEnabled(false); //下一页失能
enlarges->setEnabled(false); //放大失能
narrow->setEnabled(false); //缩小失能
clearbook->setEnabled(false); //清空书签失能
fontcolor->setEnabled(false); //字体颜色失能
closefile->setEnabled(false); //关闭电子书失能
booklist->setEnabled(false); //设置进入书签失能
bookmarklist->setEnabled(false); //书签下拉列表失能
//时间显示初始化
QTimer *timer=new QTimer(this);
timer->start(1000); // 每次发射timeout信号时间间隔为1秒
//connect(timer,SIGNAL(timeout()),this,SLOT(getTime()));
connect(timer,&QTimer::timeout,this,&MyWidget::getTime);
}
void MyWidget::openBook()
{
filepath = QFileDialog::getOpenFileName(this, "Open File", "/home/chaochao", "All (*.*);;text (*.txt);;c文件 (*.c *.cc *.cpp)PDF (*.pdf);;word (*.doc)");
openFile(filepath, 0);
}
//打开文件
void MyWidget::openFile(QString filepath, int x)
{
QFile file;
file.setFileName(filepath);
if (file.isOpen())
file.close();
file.open(QIODevice::ReadOnly);
QTextStream stream(&file);
// stream.setCodec("GB2312");
Display->setPlainText(stream.readAll());
file.close();
num=12;
ft.setPointSize(num); //设置文本字体默认12大小
Display->setFont(ft);//这个只能设置所有的内容为同样的大小
QScrollBar *n = Display->verticalScrollBar();
n->setValue(x);
lineCount = Display->document()->lineCount();
qDebug()<<"行数:"<<lineCount; //获取小说行数
fonts->setEnabled(true); //字体设置使能
bookmark->setEnabled(true); //添加书签使能
previous->setEnabled(true); //上一页使能
nextd->setEnabled(true); //下一页使能
enlarges->setEnabled(true); //放大使能
narrow->setEnabled(true); //缩小使能
clearbook->setEnabled(true); //清空书签使能 、、
fontcolor->setEnabled(true); //字体颜色使能
closefile->setEnabled(true); //关闭电子书使能
bookmarklist->setEnabled(true); //书签列表使能、、
}
//设置DisolayText字体
void MyWidget::setwType()
{
bool ok;
ft=QFontDialog::getFont(&ok);
if (ok)
{
Display->setFont(ft);
}
else
{
QMessageBox::warning(this, "Warning", "设置字体失败", QMessageBox::Ok);
}
}
//设置�
@停在昨天
- 粉丝: 0
- 资源: 2
最新资源
- 贪吃蛇方案设计的方法.zip
- 微信支付账单(20240731-20240731).zip
- minio20240920.tar
- 集成供应链(Integrated Supply Chain,ISC)核心业务流程再造,华为的最佳实践
- zabbix-server-pgsql-7.0-centos-latest.tar
- zabbix-web-apache-pgsql-7.0-centos-latest.tar
- Altium Designer 24.9.1 Build 31 (x64)
- 基于JAVA的人机对弈的一字棋系统设计与实现课程设计源代码,极大极小搜索和α-β搜索算法
- 电子回单_2024092100085000842531409053050071685353.pdf
- 背景:js多边形渐变网格背景插件效果演示
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0