⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainwindow.cpp

📁 linux 下 qt 编写的阅读器实例!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    {         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 + -