📄 mainwindow.cpp
字号:
{ if (!pathfile.isEmpty()) { MainWindow *existing = findMainWindow(pathfile); if (existing) { existing->show(); existing->raise(); existing->activateWindow(); return; } else { QSettings settings("Qreadbook", "Configuration"); if (pathfilename != tr("")) settings.setValue(pathfilename, textEdit->verticalScrollBar()->value()); pathfilename = pathfile; loadFile(pathfile); } } tree->hide(); }}void MainWindow::dirtreeDisplaySlot(){ if (!tree->isHidden()) { tree->hide(); } else { tree->show(); }}void MainWindow::fontSelectSlot(){ bool ok; QFont newfont = *font; font = new QFont(QFontDialog::getFont(&ok,newfont, this)); if (ok) textEdit->setFont(*font);}void MainWindow::fontColorSlot(){ QColor color = QColorDialog::getColor(textEdit->textColor(), this);if (color.isValid()) { fontcolor = new QColor(color); QPalette palette; palette.setColor(QPalette::Text, color); palette.setColor(QPalette::Base, *bgcolor); textEdit->setPalette(palette); }}void MainWindow::bgColorSlot(){ QColor color = QColorDialog::getColor(textEdit->textColor(), this); if (color.isValid()) { bgcolor = new QColor(color); QPalette palette; palette.setColor(QPalette::Base, color); palette.setColor(QPalette::Text, *fontcolor); textEdit->setPalette(palette); }}void MainWindow::createMenus(){ fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(openAct); fileMenu->addSeparator(); fileMenu->addAction(closeAct); configMenu = menuBar()->addMenu(tr("&View")); configMenu->addAction(fontAct); configMenu->addAction(fontcolorAct); configMenu->addAction(bgcolorAct); configMenu->addSeparator(); configMenu->addAction(lefttreehideAct); configMenu->addSeparator(); configMenu->addAction(view_fullScreenAct); controlMenu = menuBar()->addMenu(tr("&Control")); controlMenu->addAction(switchControlAct); controlMenu->addAction(addstepAct); controlMenu->addAction(minusstepAct); controlMenu->addSeparator(); controlMenu->addAction(clockdialogAct); controlMenu->addSeparator(); controlMenu->addAction(minimizeAct); menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct);}void MainWindow::createStatusBar(){ statusBar()->showMessage(tr("Ready"));}void MainWindow::swithchControlSlot(){ if (mousecontrol) { if (!fullscreen) statusBar()->showMessage(tr("Now: AutoScroll Control (step:%1)").arg(step)); mousecontrol = false; pagestep = textEdit->verticalScrollBar()->pageStep(); timer->start(100); } else { if (!fullscreen) statusBar()->showMessage(tr("Now: Mouse Control")); mousecontrol = true; timer->stop(); textEdit->verticalScrollBar()->setPageStep(pagestep); }}void MainWindow::addStepSlot(){ if (!mousecontrol && step < 1000) step = step*2; if (!fullscreen && !mousecontrol) statusBar()->showMessage(tr("Now: AutoScroll Control (step:%1)").arg(step));}void MainWindow::minusStepSlot(){ if (!mousecontrol && step > 1) step = step/2; if (!fullscreen && !mousecontrol) statusBar()->showMessage(tr("Now: AutoScroll Control (step:%1)").arg(step));}void MainWindow::autoScrollSlot(){ QScrollBar *sb = textEdit->verticalScrollBar(); sb->setPageStep(step); sb->setValue(sb->pageStep()+sb->value());}void MainWindow::fullScreenModeSlot(){ if (!fullscreen) { //menuBar()->hide(); statusBar()->hide(); fullscreen = true; } else { //menuBar()->show(); statusBar()->show(); fullscreen = false; } this->setWindowState( this->windowState() ^ Qt::WindowFullScreen );}void MainWindow::readSettings(){ QSettings settings("Qreadbook", "Configuration"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); move(pos); resize(size); fontcolor = new QColor(settings.value("fr", 0).toInt(), settings.value("fg", 0).toInt(),settings.value("fb", 0).toInt(), settings.value("fa", 255).toInt()); bgcolor = new QColor(settings.value("br", 255).toInt(), settings.value("bg", 255).toInt(),settings.value("bb", 255).toInt(), settings.value("ba", 255).toInt()); QPalette palette; palette.setColor(QPalette::Text, *fontcolor); palette.setColor(QPalette::Base, *bgcolor); textEdit->setPalette(palette); font->setFamily(settings.value("fontfamily", font->defaultFamily()).toString()); font->setPointSize(settings.value("fontpointsize", 10).toInt()); font->setBold(settings.value("fontbold", 0).toBool()); font->setItalic(settings.value("fontitalic", 0).toBool()); textEdit->setFont(*font); }void MainWindow::writeSettings(){ QSettings settings("Qreadbook", "Configuration"); settings.setValue("pos", pos()); settings.setValue("size", size()); int r, g, b,a; fontcolor->getRgb(&r,&g,&b,&a); settings.setValue("fr", r); settings.setValue("fg", g); settings.setValue("fb",b); settings.setValue("fa",a); bgcolor->getRgb(&r,&g,&b,&a); settings.setValue("br", r); settings.setValue("bg", g); settings.setValue("bb",b); settings.setValue("ba",a); settings.setValue("fontfamily", font->family()); settings.setValue("fontpointsize", font->pointSize()); settings.setValue("fontbold", font->bold()); settings.setValue("fontitalic", font->italic()); if (pathfilename != tr("")) settings.setValue(pathfilename, textEdit->verticalScrollBar()->value());}void MainWindow::loadFile(const QString &fileName){ QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("QReadBook"), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } QTextStream in(&file); QTextCodec *codec = QTextCodec::codecForName(codecstr); in.setCodec(codec); QApplication::setOverrideCursor(Qt::WaitCursor); textEdit->setPlainText(in.readAll()); QSettings settings("Qreadbook", "Configuration"); int line=settings.value(pathfilename,-1).toInt(); if (line!=-1) { textEdit->verticalScrollBar()->setValue(line); } QApplication::restoreOverrideCursor(); setCurrentFile(fileName); statusBar()->showMessage(tr("File loaded"), 2000);}void MainWindow::setCurrentFile(const QString &fileName){ isUntitled = fileName.isEmpty(); if (isUntitled) { curFile = tr("Please Load Your Book"); } else { curFile = QFileInfo(fileName).canonicalFilePath(); } textEdit->document()->setModified(false); setWindowModified(false); setWindowTitle(tr("%1[*] - %2").arg(strippedName(curFile)) .arg(tr("QReadBook")));}QString MainWindow::strippedName(const QString &fullFileName){ return QFileInfo(fullFileName).fileName();}MainWindow *MainWindow::findMainWindow(const QString &fileName){ QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath(); foreach (QWidget *widget, qApp->topLevelWidgets()) { MainWindow *mainWin = qobject_cast<MainWindow *>(widget); if (mainWin && mainWin->curFile == canonicalFilePath) return mainWin; } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -