【问题标题】:QT Installer Controller Script crash while "addWizardPage"“addWizardPage”时 QT 安装程序控制器脚本崩溃
【发布时间】:2023-03-22 04:21:01
【问题描述】:

我在使用 QT 安装程序时遇到了一些问题 - 已经完成了所有教程(尤其是 http://doc.qt.io/qtinstallerframework/noninteractive.html),但我仍然是一个真正的新手

我需要什么:

  • 将语言选择作为第一页的安装程序
  • 在 TargetDirectory 中添加第二个(保存)路径

我有什么:

  • 一个 installscript.js(包根目录)
  • 一个 ControlScript.js(config.xml 中的路径)

我在 ControlScript.js 中尝试了什么:

function Controller()
 {
    QMessageBox.information("DEBUG", "DEBUG", "DEBUG", QMessageBox.Ok);
    installer.addWizardPage(component, "Start", QInstaller.Introduction);
    QMessageBox.information("TEST", "TEST", "TEST", QMessageBox.Ok);
 }

我放置在配置路径和包根目录的 Start.ui,但没有任何反应...第二个 MessageBox 从未显示 - 安装程序似乎已崩溃

function Controller()
 {

 }

 Controller.prototype.IntroductionPageCallback = function()
 {
   installer.addWizardPageItem(component ,"lineEdit",QInstaller.TargetDirectory);
 }

同样——安装程序崩溃了,这里什么也没有发生

希望您能帮我修复代码 =)

有人可以告诉我如何在安装程序运行时更改语言或设置新的像素图(形成现有资源)吗?

我在 installscript.js 中写了这个不完整的代码:

NewLanguageSeted = function()
{
    var widget = gui.pageWidgetByObjectName("DynamicLanguageSelection");
    QMessageBox.information("DEBUG", "DEBUG", "DEBUG", QMessageBox.Ok);
    widget.Icon.setPixmap("");


    installer.languageChanged();
    QMessageBox.information("LanguageSelec", "LanguageSelec", "LanguageSelec", QMessageBox.Ok);

}

installer.languageChanged(); 将根据 *.qm 文件更改所有文本 - 但我如何获取/设置实际语言?

widget.Icon.setPixmap(""); 更改像素图 - 但我需要知道我必须在“”中插入什么

对于 ui 文件,我使用资源文件:

<property name="pixmap">
      <pixmap resource="../../../resource/resource.qrc">:/DuerrPictures/watermark.png</pixmap>

【问题讨论】:

    标签: qt controller installation pixmap


    【解决方案1】:

    据我所知,无法从控制器脚本中添加安装程序页面。如果您从 QtCreator 运行安装程序,您将看到相应的调试输出,类似于 component type is not defined

    要添加页面,您必须在组件脚本(例如构造函数)中进行。这一项将在您选择 3 个复选框之一后立即执行。 .ui-文件也必须是包的一部分:

    关于第二个 linedit - 这是同样的问题!该函数将组件作为参数 - 它必须在 installscript.js 内完成。

    安装脚本.js:

    function Component()
     {
        QMessageBox.information("DEBUG", "DEBUG", "DEBUG", QMessageBox.Ok);
        installer.addWizardPage(component, "Start", QInstaller.Introduction);
        installer.addWizardPageItem(component ,"lineEdit",QInstaller.TargetDirectory);
        QMessageBox.information("TEST", "TEST", "TEST", QMessageBox.Ok);
     }
    

    应该使用与 .ui 文件中相同的路径来设置像素图,即:/DuerrPictures/watermark.png。你试过吗?

    关于您的语言问题 - 抱歉,我对此一无所知。查看Scripting API - 那里列出了所有脚本类,也许你能找到一些东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多