【发布时间】:2014-03-08 06:45:16
【问题描述】:
我有一堆 QLineEdit 框,我想从中删除边框。理想情况下,我只想用一行代码来做到这一点,而不必为每个QLineEdit 框设置边框。我正在尝试使用QLineEdit::setFrame(false);,但这会返回非法调用非静态成员函数。有什么建议吗?
【问题讨论】:
我有一堆 QLineEdit 框,我想从中删除边框。理想情况下,我只想用一行代码来做到这一点,而不必为每个QLineEdit 框设置边框。我正在尝试使用QLineEdit::setFrame(false);,但这会返回非法调用非静态成员函数。有什么建议吗?
【问题讨论】:
您可以为应用程序或这些行编辑的父级设置样式表:
window()->setStyleSheet("QLineEdit { border: none }");
或
window()->setStyleSheet("QLineEdit { qproperty-frame: false }");
后者相当于执行如下代码:
for(auto ed : window()->findChildren<QLineEdit*>())
ed->setFrame(false);
window() 指的是QWidget * QWidget::window() const。
由于您想在应用程序范围内进行,您可以简单地在应用程序上设置样式表:
qApp->setStyleSheet("QLineEdit { qproperty-frame: false }");
您可以进一步使用 CSS 选择器来覆盖某些对象的框架。您可以使用 CSS 的强大功能。
【讨论】:
为此使用QLineEdit::setFrame()。但是,是的,它不是静态方法。所以,你必须在一个对象上调用它:myLineEdit->setFrame( false );
【讨论】: