0

这个问题很简单,在标题中。

谷歌搜索对此没有帮助。如何让 QFileDialog 在其保存名称字段上使用 QValidator?

谢谢。

4

1 回答 1

1

以下内容有点杂乱,但似乎有效。

您可以使用QObject::findChildren来定位对话框的QLineEdit子小部件。假设只有一个这样的小部件,您可以将验证器应用于该小部件......

QFileDialog fd;
auto children = fd.findChildren<QLineEdit *>();
if (children.size() == 1) {

  /*
   * Apply a validator that forces the user to enter a name
   * beginning with a lower case `a' -- a bit pointless but...
   */
  QRegExpValidator validator(QRegExp("^a"));

  /*
   * Apply the validator.
   */
  children.front()->setValidator(&validator);
  fd.exec();
}

快速测试表明它似乎工作得很好。就像我说的那样:它确实感觉有点杂乱无章。

于 2017-04-15T10:34:44.070 回答