2016-09-29 45 views
-1

的main.cpp如何在应用程序运行时通过apllication重置样式表文件?

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中按下特定的按钮,并且可以重新使用该按钮的样式表文件来重新启动应用程序?

+0

你确切的问题是什么?你无法读取文件?你不能应用样式表? –

+0

我得到了我的问题的解决方案 –

+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(); 
} 
相关问题