三种设置样式表的方法:
1.使用ui文件,选中具体右键样式表输入即可
2.使用纯代码
mywidget::mywidget(QWidget *parent) : QWidget(parent)
{this->setGeometry(100,100,500,500);this->setObjectName("mywidget");this->setStyleSheet("QWidget{background-color:blue;}");Button1=new QPushButton(this);//申请按键内存,挂载在mywidget上Button1->setGeometry(100,100,50,50);//设置第一个按键位置Button1->setStyleSheet("QPushButton{background-color:red;}");//设置第一个按键样式表connect(Button1,SIGNAL(clicked()),this,SLOT(close()));Button2=new QPushButton(this);申请按键内存,挂载在mywidget上Button2->setGeometry(200,200,50,50);//设置第二个按键位置Button2->setStyleSheet("QPushButton{background-color:green;}");//设置第二个按键样式表connect(Button2,SIGNAL(clicked()),this,SLOT(close()));
}
显示效果
3.使用css文件
添加一个资源文件夹
再add new添加一个qss文件
前两行删掉,开始编辑
setStyleSheet("QPushButton{background-color:red;}");
setStyleSheet("QPushButton{background-color:green;}");
这里会发现一个问题,在纯代码设置的时候可以文件加载的时候怎么知道green和red对应哪个pushbutton呢?如果不输入确定的对象将会应用于全部QPushButton对象
可以通过设置对象名称来分别
mywidget::mywidget(QWidget *parent) : QWidget(parent)
{this->setGeometry(100,100,500,500);this->setObjectName("mywidget");this->setStyleSheet("QWidget{background-color:blue;}");Button1=new QPushButton(this);Button1->setGeometry(100,100,50,50);Button1->setObjectName("b1");//BUTTON1的名称connect(Button1,SIGNAL(clicked()),this,SLOT(close()));Button2=new QPushButton(this);Button2->setGeometry(200,200,50,50);Button2->setObjectName("b2");//BUTTON2的名称connect(Button2,SIGNAL(clicked()),this,SLOT(close()));
}
然后在qss文件的对象后添加#和我们取的对象的名称
setStyleSheet("QPushButton#b2{background-color:red;}");
setStyleSheet("QPushButton#b1{background-color:green;}");
当然要在主程序一开始读取该qss文件
路径为
copy path
这里有一个问题就是qss的覆盖问题,可能是先后顺序,所以要把this->setStyleSheet("QWidget{background-color:blue;}");这行删掉,将该语句全部添加到qss文件
在主函数添加读取qss文件的代码
int main(int argc, char *argv[])
{QApplication a(argc, argv);QFile qssFile(":/style.qss");if(qssFile.exists())//文件是否存在{qssFile.open(QFile::ReadOnly);QString s=QLatin1String(qssFile.readAll());qDebug()<<s<<endl;qApp->setStyleSheet(s);qssFile.close();}Widget w;w.show();return a.exec();
}
qApp指向当前的QApplication
或QGuiApplication
对象,可以用qApp访问到应用程序对象。