每天一个许愿技巧by,给一个对象设置属性
说好的计划,就要实现,今年我要把吹过的牛皮,设定的计划,统统给圆了。
打开Qt帮助文档,我们接着看到了这个函数:
QList<QByteArray> dynamicPropertyNames() const这个函数的目的就是获取到动态属性的名字,那我们相关运用到上面是那些呢。
与其相关联就是下面函数了:
QVariant property(const char *name) constbool setProperty(const char *name, const QVariant &value)一个是获取属性,一个是设置属性。那我们一般如何用这个呢,好多情况在qss中配合使用。
首先看下代码:
void MainWindow::setPropertA(){ QPushButton *button = new QPushButton; button->setProperty("flat",true); QVariant isflat = button->property("flat"); qDebug() << isflat << endl;}我们可以设置一个属性,然后在找到对应的属性值。
我们运用到qss中,来看下效果吧。
首先我们界面布局如下
对应的qss表写如下:
QLineEdit#lineEdit{background:yellow;}#lineEdit[required = true]{background:red;}在改变属性按钮写下如下代码:
void MainWindow::on_pushButton_clicked(){ ui->lineEdit->setProperty("required",true); //设置为true ui->lineEdit->style()->polish(ui->lineEdit);}运行程序后,点击按钮后,就会变成红色。
dynamicPropertyNames的使用我们在按钮下,写下代码:
void MainWindow::on_pushButton_2_clicked(){ QList<QByteArray> names = ui->lineEdit->dynamicPropertyNames(); for(auto name : names) { qDebug() << name << endl; }}我们可以发现上面有我们设置的名字。
有关这个属性使用可以看我这个博客,之前写过一个功能,希望大家喜欢:
传送门:https://blog.csdn.net/weixin_42126427/article/details/106716048
下面是cpp整体的代码:
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QPushButton>#include <QDebug>#include <QStyle>#include <QList>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); setPropertA();}MainWindow::~MainWindow(){ delete ui;}void MainWindow::setPropertA(){ QPushButton *button = new QPushButton; button->setProperty("flat",true); QVariant isflat = button->property("flat"); qDebug() << isflat << endl;}void MainWindow::on_pushButton_clicked(){ ui->lineEdit->setProperty("required",true); //设置为true ui->lineEdit->style()->polish(ui->lineEdit);}void MainWindow::on_pushButton_2_clicked(){ QList<QByteArray> names = ui->lineEdit->dynamicPropertyNames(); for(auto name : names) { qDebug() << name << endl; }}