删除QLineEdit的边框

时间:2014-02-10 18:59:44

标签: qt qlineedit

我有一堆QLineEdit个框我想从中移除边框。理想情况下,我想用一行代码执行此操作,而不必为每个QLineEdit框设置任何边框。我试图使用QLineEdit::setFrame(false);但这会返回非静态成员函数的非法调用。建议?

2 个答案:

答案 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 );