QtCreator模板向导:跳过%ProjectName%变量中的破折号

5
我正在尝试创建一个模板向导,其中项目名称(在“新建项目”对话框中捕获)被转换为小写,并用于生成C++中的不同元素(命名空间、库名称等等)。因此,生成的名称不能包含破折号、以数字开头等。
例如,在wizard.xml中,变量LIBRARYNAME是从用户输入生成的,但它以小写的%ProjectName:l%作为默认值。
<fieldpagetitle>Project Configuration</fieldpagetitle>
    <fields>
    <!-- Library name -->
        <field mandatory="true" name="LIBRARYNAME">
            <fieldcontrol class="QLineEdit" validator='^[^-]+$'
                          defaulttext="%ProjectName:l%" />
            <fielddescription>Name for created library (all lowercase)</fielddescription>
        </field>

使用 validator = '^[^-]+$' 正则表达式,我可以防止用户在变量中输入破折号('-'),但是我无法防止他们在设置 %ProjectName% 变量时做相同的操作。
是否有可能跳过向导中使用的 %ProjectName% 和/或其他变量中的不需要的符号?例如,在生成 XML 中的 "defaulttext" 时。
到目前为止,我已经尝试了不同的类似 JavaScript 的东西,但没有任何作用,模板向导的文档太简单了,它们没有涵盖这些内容。
现在我的选择是删除表单中的默认文本,但那太糟糕了!我想做一些酷炫的事情,比如从项目名称生成命名空间名称。

你说的“在XML中生成‘defaulttext’是什么意思?”是指可以在XML中使用defaulttext="任意文本"。 - Ali Mofrad
当然可以,但我想要用%ProjectName%来做这件事。 - Яois
1个回答

3

常规的验证规则对于 %ProjectName% 变量不起作用吗?您是否尝试添加类似以下代码:

 <validationrules>
    <validationrule condition='/^[^-]+$/.test("%ProjectName%")'>
        <message>%ProjectName% cannot be used as project name.</message>
    </validationrule>
 </validationrules>

它有效!但是你必须去掉“!”否则会使所有不包含破折号的名称无效 :D - Яois
抱歉,我错误地反转了正则表达式匹配.. :) 是我的错,已经更正了答案。 - jester
你的回答并不完全是我想要的,但后来我意识到我可以将相同的验证规则应用于%LIBRARYNAME%和其他变量(那些不能包含破折号的变量)。无论如何,有了你的正则表达式代码,现在我可以做到这一点!谢谢! - Яois

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接