如何在应用程序运行时重置样式表文件over apllication?

时间:2016-09-29 05:59:16

标签: qt qt5

的main.cpp

int main(int argc, char *argv[]){
QApplication app(argc, argv);

QFile data("://stylesheet.qss");  // this is a stylesheet file in images.qrc file
    QString style;
    if (data.open(QFile::ReadOnly))
    {
        QTextStream styleIn(&data);
        style = styleIn.readAll();
        data.close();
        app.setStyleSheet(style);  // I want this line to restart with different style-sheet file 
    }
app.setWindowIcon(QIcon("://images/BEL.jpg"));

MainWindow w;
w.setFixedSize(500,350);
w.showMaximized();
return app.exec();}

theme.cpp

theme::theme(QWidget *parent) :
QDialog(parent),
ui(new Ui::theme) {    
ui->setupUi(this);
ui->apply_button->setDefault(1);
QButtonGroup *radio=new QButtonGroup;
radio->setExclusive(true);
radio->addButton(ui->radio_blue,2);
radio->addButton(ui->radio_grey,3);
connect(radio,SIGNAL(buttonClicked(int)),this,SLOT(function(int)));}
theme::~theme()
{
delete ui;
 }
 void theme::on_pushButton_2_clicked()
{
this->close();
 }
  void theme::function(int value)
  {   if(value==2){
    qDebug()<<"blue";}
  else if(value==3){
    qDebug()<<"green";}
 else
    qDebug()<< "error";
  }

我有main.cpp和theme.cpp以及许多其他文件。我的主题窗口中有两个单选按钮。我有两个灰色和蓝色的样式表文件。当我检查任何按钮时,它应该适用于所有应用程序,如main.cpp。

中所示

问题是当我启动应用程序时它只应用一次文件。但是当我检查其他按钮时,我想让它运行。无论如何,我现在可以在main.cpp中按下特定的按钮并重新启动应用程序,应用该按钮的样式表文件?

1 个答案:

答案 0 :(得分:1)

  theme::theme(QWidget *parent) :
   QDialog(parent),
   ui(new Ui::theme)
   {
  ui->setupUi(this);
  switch(radio)
{
case 1:
    ui->radio_blue->setChecked(1);
    break;
case 2:
    ui->radio_red->setChecked(1);
    break;
case 3:
    ui->radio_green->setChecked(1);
}
QButtonGroup *radio=new QButtonGroup;
radio->setExclusive(true);
radio->addButton(ui->radio_blue,2);
radio->addButton(ui->radio_red,3);
radio->addButton(ui->radio_green,4);
connect(radio,SIGNAL(buttonClicked(int)),this,SLOT(function(int)));
qApp->installEventFilter(this);

}
theme::~theme()
 {
delete ui;
 }

 void theme:: function(int value)
  {
if(value==2)
{
    qDebug()<<"blue";
    theme_val=2;

}
else if(value==3)
{
    qDebug()<<"red";
    theme_val=3;


}
else if(value==4)
{
    qDebug()<< "green";
    theme_val=4;

}
else
    qDebug()<< "error";

  }
    void theme::on_apply_button_clicked()
  {
if(theme_val==2)
{
    qDebug()<< "blue";
    QFile data1("://stylesheet.qss");
    QString style1;
    if (data1.open(QFile::ReadOnly))
    {
        QTextStream styleIn(&data1);
        style1 = styleIn.readAll();
        data1.close();
        qApp->setStyleSheet(style1);
    }
    radio=1;
}
else if(theme_val==3)
{
    qDebug()<< "red";
    QFile data("://stylesheet1.qss");
    QString style;
    if (data.open(QFile::ReadOnly))
    {
        QTextStream styleIn(&data);
        style = styleIn.readAll();
        data.close();
        qApp->setStyleSheet(style);
    }
    radio=2;
}
else if(theme_val==4)
{
    qDebug()<< "green";
    QFile data2("://stylesheet2.qss");
    QString style2;
    if (data2.open(QFile::ReadOnly))
    {
        QTextStream styleIn(&data2);
        style2 = styleIn.readAll();
        data2.close();
        qApp->setStyleSheet(style2);
    }
    radio=3;
}
else
    qDebug()<< "errror" ;
close();
}