如果我只想说标识符文件名,如何将QRegexpValidator附加到QFileDialog?

时间:2017-04-14 17:31:45

标签: qt5 pyqt5 qfiledialog qvalidator

这个问题在标题中非常简单。

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

感谢。

1 个答案:

答案 0 :(得分:1)

以下是有点像kludge,但似乎有用。

您可以使用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();
}

快速测试表明它看起来效果很好。就像我说的那样:它确实感觉像是一块垃圾。