Javascript 覆盖Qt安装程序框架下一步按钮单击操作
我正在尝试Qt框架安装程序(动态页面示例)。我添加了Javascript 覆盖Qt安装程序框架下一步按钮单击操作,javascript,qt,installation,Javascript,Qt,Installation,我正在尝试Qt框架安装程序(动态页面示例)。我添加了 QLineEdit可在预定义页面“ReadyForInstallation”中获取用户输入,该页面如下所示: 我现在要做的是禁用next按钮,直到用户输入正确的键。但我找不到任何与此问题相关的文档。在构造函数或UI文件中,默认情况下,保持“下一步”按钮处于禁用状态。 QLineEdit发出的信号是textChanged(const QString&)。您可以将插槽连接到此信号,并在插槽中检查输入的文本是否与有效密钥相同。下面是模拟代码,它将
QLineEdit可在预定义页面“ReadyForInstallation”中获取用户输入,该页面如下所示:
我现在要做的是禁用next按钮,直到用户输入正确的键。但我找不到任何与此问题相关的文档。在构造函数或UI文件中,默认情况下,保持“下一步”按钮处于禁用状态。 QLineEdit发出的信号是
textChanged(const QString&)
。您可以将插槽连接到此信号,并在插槽中检查输入的文本是否与有效密钥相同。下面是模拟代码,它将帮助您
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLineEdit>
#include <QString>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
// Slot where you can for the validity of the key
void onLineEditFilled(const QString&);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
谢谢你的回复。我在问题中没有提到这一点,Qt框架安装程序示例是用Javascript()编写的。请你修改一下你的问题,把这个也提出来好吗。我将很快检查解决方案。
#include "widget.h"
#include "./ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
// by default the next pushbutton is disabled.
ui->nextPushButton->setEnabled(false);
connect(ui->lineEdit, SIGNAL(textChanged(const QString&)), this, SLOT(onLineEditFilled(const QString&)));
connect(ui->lineEdit_2, SIGNAL(textChanged(const QString&)), this, SLOT(onLineEditFilled(const QString&)));
connect(ui->lineEdit_3, SIGNAL(textChanged(const QString&)), this, SLOT(onLineEditFilled(const QString&)));
connect(ui->lineEdit_4, SIGNAL(textChanged(const QString&)), this, SLOT(onLineEditFilled(const QString&)));
}
Widget::~Widget()
{
delete ui;
}
void Widget::onLineEditFilled(const QString&)
{
if(ui->lineEdit->text() == "0000" &&
ui->lineEdit_2->text() == "0000" &&
ui->lineEdit_3->text() == "0000" &&
ui->lineEdit_4->text() == "0000")
{
ui->nextPushButton->setEnabled(true);
}
else
{
ui->nextPushButton->setEnabled(false);
}
}