zoukankan      html  css  js  c++  java
  • QT软件主题切换

    1、在配置文件里增加两个qss文件

     第一个是深蓝色主题,第二个是亮色主题

    ps:设置背景图

    QWidget#centralWidget{
        border: 0px solid #7D7D7D;
        background: rgba(0,0,0,0);
        background-image:url(:/main/back.png)
    }

    2、新建主题选择类

    ps:

    主要是一个界面类,初始化时将当前文件里里所有的主题列在表格里,供用户选择;

    需要传入当前主程序的this指针,通过this->setStyleSheet来设置qss;

    在每次设置主题之后需要把当前主题存到配置文件,下次启动程序自动设置为上次已设置的主题。

    Ztheme.h

    #ifndef ZTHEME_H
    #define ZTHEME_H
    
    #include <QDialog>
    
    namespace Ui {
    class Ztheme;
    }
    
    namespace ZTHEME_NAMESPACE {
    const QString DEFAULE_THEME_NAME = "main_dark_blue.qss";
    const QString THEMES_DIR = "./themes/";
    }
    
    class Ztheme : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit Ztheme(QWidget *parent = 0);
        ~Ztheme();
        /*传入需要设置的程序的指针*/
        inline void setMainUi(QWidget* p){this->pParent = p;}
        /*设置上次的风格*/
        void setLastTheme();
    public:
        static QWidget* pParent;
    private slots:
        void on_pushButton_submit_clicked();
        void on_pushButton_cancel_clicked();
    
    private:
        Ui::Ztheme *ui;
        void initThemes(void);
    };
    
    #endif // ZTHEME_H

    Ztheme.cpp

    #include "ztheme.h"
    #include "ui_ztheme.h"
    #include <QDir>
    #include <QFile>
    #include <QDebug>
    #include "config.h"
    
    using namespace ZTHEME_NAMESPACE;
    using namespace ZConfigNamespace;
    
    QWidget* Ztheme::pParent = nullptr;
    
    Ztheme::Ztheme(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::Ztheme)
    {
        ui->setupUi(this);
        (void)initThemes();
    }
    
    Ztheme::~Ztheme()
    {
        delete ui;
    }
    
    void Ztheme::setLastTheme()
    {
        QByteArray themeBa;
        QString themePath = QDir::currentPath() + "/themes/" + Config::getInstance()->getCfgItemByKey(CUR_THEME).toString();
        QFile file(themePath);
        file.open(QFile::ReadOnly);
        if(file.isOpen()){
            themeBa = file.readAll();
            file.close();
        }
        if(pParent){
            this->pParent->setStyleSheet(themeBa);
        }
    }
    
    void Ztheme::initThemes()
    {
        ui->tableWidget_theme->clearContents();
        ui->tableWidget_theme->setRowCount(0);
        QDir dir(THEMES_DIR);
        QFileInfoList file_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
        for(int i=0; i<file_list.size(); i++)
        {
            ui->tableWidget_theme->insertRow(ui->tableWidget_theme->rowCount());
            ui->tableWidget_theme->setItem(ui->tableWidget_theme->rowCount()-1, 0, new QTableWidgetItem(QString::number(ui->tableWidget_theme->rowCount())));
            ui->tableWidget_theme->setItem(ui->tableWidget_theme->rowCount()-1, 1, new QTableWidgetItem(file_list.at(i).baseName()));
            for(int col=0; col<2; col++){
                ui->tableWidget_theme->item(ui->tableWidget_theme->rowCount()-1, col)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
            }
        }
    }
    
    void Ztheme::on_pushButton_submit_clicked()
    {
        QByteArray themeBa;
        QString qssFileName = ui->tableWidget_theme->item(ui->tableWidget_theme->currentRow(), 1)->text();
        QString themePath = THEMES_DIR + qssFileName + ".qss";
        QFile file(themePath);
        file.open(QFile::ReadOnly);
        if(file.isOpen()){
            themeBa = file.readAll();
        }
        if(pParent){
            this->pParent->setStyleSheet(themeBa);
            Config::getInstance()->setValue(qssFileName + ".qss" ,CUR_THEME);
        }
    
        this->done(1);
    }
    
    void Ztheme::on_pushButton_cancel_clicked()
    {
        this->done(0);
    }

    Ztheme.ui

     

    综上:核心就是设置qss文件




    长风破浪会有时,直挂云帆济沧海!
    可通过下方链接找到博主
    https://www.cnblogs.com/judes/p/10875138.html
  • 相关阅读:
    在IDEA中使用maven
    使用IDEA创建JavaWeb项目 部署本地tomcat并运行
    Java
    c++
    Vue学习
    svn 小程序地址
    SVN 上传代码
    eclipse插件 --js
    https抓包
    eclipse 断点位置发生莫名其妙的位移
  • 原文地址:https://www.cnblogs.com/judes/p/14815498.html
Copyright © 2011-2022 走看看