如何连接Qt中的LineEdit和Button?
我使用Qt Designer创建了一个.ui文件,并在该文件中创建了一个最初禁用的如何连接Qt中的LineEdit和Button?,qt,Qt,我使用Qt Designer创建了一个.ui文件,并在该文件中创建了一个最初禁用的按钮,我还有一个行编辑。我想连接LineEdit和PushBotton,以便在LineEdit中更改文本时,按钮将启用,但在信号和插槽中找不到任何此类选项。有人能帮忙吗?您必须编写一个自定义插槽(这很容易) 将此添加到主窗口声明(.h文件): 您的.cpp文件: private slots: void checkInput(const QString &text); MainWindow::Mai
按钮
,我还有一个行编辑
。我想连接LineEdit
和PushBotton
,以便在LineEdit
中更改文本时,按钮将启用,但在信号和插槽中找不到任何此类选项。有人能帮忙吗?您必须编写一个自定义插槽(这很容易)
将此添加到主窗口声明(.h文件):
您的.cpp文件:
private slots:
void checkInput(const QString &text);
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkInput(QString)));
}
void MainWindow::checkInput(const QString &text)
{
ui->pushButton->setEnabled(!text.isEmpty());
}
要将此插槽添加到Qt Designer,请执行以下操作:
- 右键单击主窗口“更改信号/插槽”李>
- 通过输入checkInput(),添加自定义插槽(“加号”按钮)李>
- 之后,您将能够通过Qt Designer连接自定义插槽
您必须编写自定义插槽(这非常简单)
将此添加到主窗口声明(.h文件):
您的.cpp文件:
private slots:
void checkInput(const QString &text);
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkInput(QString)));
}
void MainWindow::checkInput(const QString &text)
{
ui->pushButton->setEnabled(!text.isEmpty());
}
要将此插槽添加到Qt Designer,请执行以下操作:
- 右键单击主窗口“更改信号/插槽”李>
- 通过输入checkInput(),添加自定义插槽(“加号”按钮)李>
- 之后,您将能够通过Qt Designer连接自定义插槽
在Qt 5中,您通常不需要琐碎的专用插槽,而应该使用lambdas:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit, &QLineEdit::textChanged, [this](const QString & text) {
ui->pushButton->setEnabled(!text.isEmpty());
});
...
}
在Qt 5中,您通常不需要琐碎的专用插槽,而应该使用lambdas:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit, &QLineEdit::textChanged, [this](const QString & text) {
ui->pushButton->setEnabled(!text.isEmpty());
});
...
}
将textChanged(const QString&text)
与调用按钮->设置启用(true)
的自定义插槽连接。我想您可能还需要检查text.isEmpty()
slot@Miki我正在使用Qt4.8设计器,我正在创建ui文件而不是编码。我非常确定您可以/必须编写自定义插槽。。。你是说我们不可能从Designer那里做到这一点吗?我是说我不认为你有适合你需要的标准插槽,所以写你自己的。您应该仍然能够连接到设计器中的该插槽。使用调用按钮->设置启用(true)
的自定义插槽连接textChanged(const QString&text)
。我想您可能还需要检查text.isEmpty()
slot@Miki我正在使用Qt4.8设计器,我正在创建ui文件而不是编码。我非常确定您可以/必须编写自定义插槽。。。你是说我们不可能从Designer那里做到这一点吗?我是说我不认为你有适合你需要的标准插槽,所以写你自己的。您仍然可以连接到设计器中的该插槽。如何将其添加到设计器?当我右键单击窗体时,我没有任何更改信号/插槽的选项。您也可以在连接信号/插槽(F4)时按“配置连接”窗口中的“编辑…”按钮来获得此对话框。该插槽是主窗口成员,这就是为什么它适用于MainWindow。对于这种特殊情况,您需要连接LineEdit和MainWindow(不是您的按钮)信号和插槽。当我为MainWindow创建一个插槽时,如何定义插槽()。如何将其添加到设计器?当我右键单击窗体时,我没有任何更改信号/插槽的选项。您也可以通过按“编辑…”来获得此对话框连接信号/插槽(F4)时,“配置连接”窗口中的按钮。此插槽是MainWindow成员,这就是为什么它适用于MainWindow。对于这种特殊情况,您需要连接LineEdit和MainWindow(而不是您的按钮)信号和插槽。当我为MainWindow创建插槽时,如何定义插槽()。