【问题标题】:Removing border of QLineEdit移除 QLineEdit 的边框
【发布时间】:2014-03-08 06:45:16
【问题描述】:

我有一堆 QLineEdit 框,我想从中删除边框。理想情况下,我只想用一行代码来做到这一点,而不必为每个QLineEdit 框设置边框。我正在尝试使用QLineEdit::setFrame(false);,但这会返回非法调用非静态成员函数。有什么建议吗?

【问题讨论】:

    标签: qt qlineedit


    【解决方案1】:

    您可以为应用程序或这些行编辑的父级设置样式表:

    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 的强大功能。

    【讨论】:

      【解决方案2】:

      为此使用QLineEdit::setFrame()。但是,是的,它不是静态方法。所以,你必须在一个对象上调用它:myLineEdit-&gt;setFrame( false );

      【讨论】:

      • 我知道,但我有大约 200 个 QLineEdits,这意味着我必须去为每个人做这个。没有办法在全球范围内做到这一点?
      猜你喜欢
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多