Jump to content

Сегодня я расскажу вам как легко менять дизайн любой монеты.


tseries

Recommended Posts

Будет предполагать что вы уже форкнули репозиторий нужной монеты и все настроили. Данный гайд предполагает чисто изменение дизайн в qt 5.1.1 и notepad++
 
Открываем notepad++ и добавляем в него эти исходные кода 
 
post-20491-0-98145100-1500749781_thumb.jpg
В нужных из этих исходных кодов добавляем в include а также код поддержки css(qss)
 
src/qt/guiutil.cpp отвечает у нас по сути на загрузку нашего дизайна. Потому мы сюда добавляем поддержку загрузки нашего css
 
 
 
#include <QApplication>
 #include "guiutil.h"
  
 #include "bitcoinaddressvalidator.h"
 @@ -28,6 +27,7 @@
 #include <QFileDialog>
 #include <QDesktopServices>
 #include <QThread>
 + #include <QSettings>
  
 #include <boost/filesystem.hpp>
 #include <boost/filesystem/fstream.hpp>

post-20491-0-58304600-1500749807_thumb.jpg

 
 "+" точто мы добавляем если нет
 
 Это хак для изменения QmessageBox( так как иначе у нас останутся так скажем не покрашенные окна тем в зависимых от guiutil.cpp формочем ( окна ошибок, подтверждения и так далее - стандартные системные окна )
     setText(header + QString(QChar(0x2003)).repeated(50));
      setDetailedText(coreOptions + "\n" + uiOptions);
 +     /* Open CSS when configured */
 +    this->setStyleSheet(GUIUtil::loadStyleSheet());
  }
  post-20491-0-35558700-1500749783_thumb.jpg
  
 Это код загрузки наших css с ресурса. Смотрим по картинке куда его примерно вставить.
 
// Open CSS when configured
QString loadStyleSheet()
{
    QString styleSheet;
    QSettings settings;
    QString cssName;
    QString theme = settings.value("theme", "").toString();


    if(!theme.isEmpty()){
        cssName = QString(":/css/") + theme; 
    }
    else {
        cssName = QString(":/css/drkblue");   сдесь указываем название файла с стилями 
        settings.setValue("theme", "drkblue"); сдесь указываем название файла с стилями 
    }
    
    QFile qFile(cssName);      
    if (qFile.open(QFile::ReadOnly)) {
        styleSheet = QLatin1String(qFile.readAll());
    }
        
    return styleSheet;
}
post-20491-0-21748200-1500749784_thumb.jpg
 
Теперь идем в src\qt\guiutil.h
 
Смотрим include 

 #ifndef GUIUTIL_H
  #define GUIUTIL_H
  
 + #include <QEvent>
 + #include <QHeaderView>
  #include <QString>
  #include <QObject>
  #include <QMessageBox>
 + #include <QTableView>
 + #include <QProgressBar>
 +
 + #include <boost/filesystem.hpp>

post-20491-0-23797100-1500749785_thumb.jpg

После добавляем 
 
 
   /** Load global CSS theme */
    QString loadStyleSheet();
post-20491-0-21248900-1500749786_thumb.jpg
 
Готово, мы добавили поддержку css в загрузчик ui.
 
Теперь перейдем к добавлению в src\qt\bitcoingui.cpp
 
 +     /* Open CSS when configured */
 +    this->setStyleSheet(GUIUtil::loadStyleSheet());   

post-20491-0-08904700-1500749917_thumb.jpg

 
Также если у нас двигается тул бар где кнопка домой сенд прием история ( убираем эту уродливою полоску открепления панельки и она станет вечно фиксированно сверху ) 
 
+ toolbar->setMovable(false);
post-20491-0-62596000-1500749787_thumb.jpg
 
теперь идем в src\qt\coincontroldialog.cpp
 
сверяем на всякий случай наличие нужны инклудов (#include <QString> и тд) иногда их добавление не обьязательно если они и так подтянутся с другого исходного кода.)
 
 
 
Добавляем 
 
        /* Open CSS when configured */
    this->setStyleSheet(GUIUtil::loadStyleSheet()); 

post-20491-0-97892600-1500750027_thumb.jpg

 
Теперь идем в qt creator , Открыть файл или проект ( ищем имямонеты-qt.pro ) 
 
переходим во вкладку ресурсы... 2 раза кликаем по ресурс файлу, в окне жмем добавить новый префикс. И добавляем нашу зарание созданный файл css и файл по пути \src\qt\res\css\имя файла
 
post-20491-0-74273800-1500750076_thumb.jpg
post-20491-0-79763000-1500750078_thumb.jpg
post-20491-0-94656000-1500750080_thumb.jpg
 
Таким же образом добавляем любые новые ресурсы что мы будем использовать.
 
Тут есть 1 нюанс , сохраняем изменения в наших ресурсах.
 
и открываем наш файл в notepad++
 
src\qt\bitcoin.qrc и правим это 
 
 
было <file>res/css/drkblue.css</file>
стало <file alias="drkblue">res/css/drkblue.css</file>
 
также поступаем в случае добавления картинок через qt.
 
в принципе все, теперь пишем стили для наших кнопок фона и так далее.
 
Точнее вы можете ознакомится посмотрев историю изменений в на git hub, как я адаптировал возможность смены дизайна.
 
 
Если формы не затрагиваются через css, ищем файл cpp формы и добавляем туда     
    /* Open CSS when configured */
    this->setStyleSheet(GUIUtil::loadStyleSheet()); 
 
Или же просто изменяем её прямо в qt creator для экономии времени. (.ui файл)
 
post-20491-0-50587900-1500750083_thumb.jpg
 
post-20491-0-67955700-1500750085_thumb.jpg
Edited by tseries
Link to comment
Share on other sites

  • 5 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...