我有一堆QLineEdit
个框我想从中移除边框。理想情况下,我想用一行代码执行此操作,而不必为每个QLineEdit
框设置任何边框。我试图使用QLineEdit::setFrame(false);
但这会返回非静态成员函数的非法调用。建议?
答案 0 :(得分:13)
您可以为应用程序或这些行编辑的父级设置样式表:
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的强大功能。
答案 1 :(得分:2)
使用QLineEdit::setFrame()
。但是,是的,它不是一种静态的方法。因此,您必须在对象上调用它:myLineEdit->setFrame( false );