0


【QT】根据控件的自定义属性进行qss样式区别设置,包括使控件不能编辑

目录

1.自定义属性筛选器

可以使用QTextEdit的setProperty方法来设置自定义属性,然后在QSS样式表中使用QTextEdit[propertyName=“propertyValue”]来设置当该属性为特定值时QTextEdit的样式。

例如:

QTextEdit *textEdit =new QTextEdit;
textEdit->setProperty("customProperty","value");

textEdit->setStyleSheet("QTextEdit[customProperty=\"value\"] { border: none; background-color: transparent; }");

这样,当customProperty属性的值为"value"时,QTextEdit的边框和背景色都会被去掉。

注意,在使用QSS设置样式时,属性值需要用双引号括起来。

2.使用qss使qtextedit不能编辑

可以在 qtextedit 的 QSS 样式表中添加属性 pointer-events: none 来禁用其编辑功能。例如:

QTextEdit {
    pointer-events: none;}

这会使 qtextedit 的整个区域都不能触发事件,因此用户也不能通过鼠标或键盘编辑它。如果你想仅在特定的情况下禁用编辑功能,你可以使用一个类选择器并应用这个属性,例如:

QTextEdit.readonly {
    pointer-events: none;}

然后,你可以使用 setReadOnly(true) 函数来将 qtextedit 设置为只读状态,例如:

ui->textEdit->setReadOnly(true);
这样,你就可以通过控制 qtextedit 的只读状态来控制它是否可以编辑了。

3.批量给某类控件设置自定义属性

要给 Qt 窗口中的某一类控件设置自定义属性,可以使用 QObject 类的 setProperty() 方法。

假设你想给所有的 QPushButton 控件设置一个自定义属性 “custom_property”,可以这样做:

QList<QPushButton *> buttons = ui->centralWidget->findChildren<QPushButton *>();foreach(QPushButton *button, buttons){
    button->setProperty("custom_property","some value");}

在这里,ui 是指向应用程序界面的指针,centralWidget 是窗口的中央部件。findChildren() 方法可以查找 centralWidget 中的所有子对象,并返回所有指定类型的子对象的列表。然后,使用 foreach 循环遍历列表中的每个按钮,并使用 setProperty() 方法设置自定义属性。

注意,你需要在窗口的 .h 文件中包含 QObject 头文件,才能使用 setProperty() 方法。

标签: qt ui 开发语言

本文转载自: https://blog.csdn.net/hh1357102/article/details/128588244
版权归原作者 颢师傅 所有, 如有侵权,请联系我们删除。

“【QT】根据控件的自定义属性进行qss样式区别设置,包括使控件不能编辑”的评论:

还没有评论