Qss样式表加载方法有3,下面逐条叙述方法:

1.在ui界面修改

进入ui界面后右键,找到改变样式表,

QStandardItemModel setData 添加大量数据 qss加载_qt


在弹出的对话框中进行样式表编辑

QStandardItemModel setData 添加大量数据 qss加载_样式表_02


首先我感觉这个方法用着非常的不爽,字小的一批,没有高亮没有提示,(虽然我试过的所有写qss的方法都不爽,不知道各位大神有没有,有自动补齐的qss编辑器给推荐)。其次,学C++的人就感觉用ui界面写东西巨low(抱头求饶)。

2.加载qss文件

首先在资源文件里扔一个.qss文件,随便叫什么

QStandardItemModel setData 添加大量数据 qss加载_加载_03


QStandardItemModel setData 添加大量数据 qss加载_高亮_04


QStandardItemModel setData 添加大量数据 qss加载_qt_05


QStandardItemModel setData 添加大量数据 qss加载_高亮_06


QStandardItemModel setData 添加大量数据 qss加载_qt_07


QStandardItemModel setData 添加大量数据 qss加载_样式表_08


这里的.qss文件随便扔一个空文本然后重新命名一下就好了。(其实可以有更智能的方法吧,江郎才尽)

QStandardItemModel setData 添加大量数据 qss加载_qt_09


然后 ctrl+r 编译一下就好了,

然后可以添加一下高亮。

高亮

QStandardItemModel setData 添加大量数据 qss加载_加载_10


修改模式栏为* .css;*.CSSL;*.qss即可

QStandardItemModel setData 添加大量数据 qss加载_qt_11


效果如下:

QStandardItemModel setData 添加大量数据 qss加载_qt_12


用这种方法写qss代码的时候要注意,初学的时候最好写一行编译一次,不然最后没有效果找不出问题,就很难受。

QLineEdit {
    background-color: yellow;
    color: rgb(87, 155, 175);
    selection-color: yellow;
    selection-background-color:rgb(87, 155, 175);
}

QPushButton{/*按钮无任何操作时*/
    background-color: green;/*背景色*/
}

QPushButton:hover{ /*鼠标悬停在按钮上时*/
    background-color:red;
}

QPushButton:pressed{/*按钮被按下时*/
    background-color:green;
}

*[mandatoryField="true"]{
    background-color:blue;
}

刚才只是创建了文件,下面就要加载了,在.h文件里声明如下函数,

void loadStyleSheet(const QString &styleSheetFile);

然后在.cpp文件里实现并调用如下

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //调用
    this->loadStyleSheet(":/style.qss");
	//测试代码
    this->setFixedSize(500,500);
    btn = new QPushButton(this);
    btn->setText("你是最棒的");
    btn->move(50,60);

    QLineEdit *lineEdit = new QLineEdit(this);
    lineEdit->setText("该睡觉了");
    lineEdit->move(0,200);

    QLineEdit * nameEdit = new QLineEdit(this);
    nameEdit->setProperty("mandatoryField", true);

    QComboBox *comboBox = new QComboBox(this);
    comboBox->move(70,100);

    QSpinBox *ageSpinBox = new QSpinBox(this);
    ageSpinBox->move(0,150);
    ageSpinBox->setProperty("mandatoryField", true);
}
//函数实现
void MainWindow::loadStyleSheet(const QString &styleSheetFile)
{
    QFile file(styleSheetFile);
    file.open(QFile::ReadOnly);
    if (file.isOpen()){
        QString styleSheet = this->styleSheet();
        styleSheet += QLatin1String(file.readAll());//读取样式表文件
        this->setStyleSheet(styleSheet);//把文件内容传参
        file.close();
    }else{
        QMessageBox::information(this,"tip","cannot find qss file");

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

测试窗口效果如下:

QStandardItemModel setData 添加大量数据 qss加载_qt_13

3.直接在类里设置

这种方法就是直接对象上调用setStyleShee(const Qstring &styleSheet)如下;

this->setStyleShee("QPushButton{background-color:blue;}");