如何在Qt中连接LineEdit和PushButton?

问题描述 投票:0回答:2

我使用Qt Designer创建了一个.ui文件,在文件中我创建了一个最初被禁用的PushButton,我也有一个LineEdit。我想连接LineEditPushBotton,以便在LineEdit中更改文本时,将启用PushButton,但我在信号和插槽中找不到任何此类选项。有人可以帮忙吗?

qt
2个回答
4
投票

你必须写一个自定义插槽(这很容易)。

将此添加到您的MainWindow声明(.h文件):

private slots:
    void checkInput(const QString &text);

你的.cpp文件:

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,请执行以下操作:

  • 右键单击MainWindow,“更改信号/插槽”;
  • 输入checkInput(),添加自定义插槽(“加号”按钮);
  • 在此之后,您将能够通过Qt Designer连接自定义插槽。

1
投票

在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());
    });
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.