的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中按下特定的按钮并重新启动应用程序,应用该按钮的样式表文件?
答案 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();
}