我使用Qt Designer创建了一个.ui文件,在文件中我创建了一个最初被禁用的PushButton
,我也有一个LineEdit
。我想连接LineEdit
和PushBotton
,以便在LineEdit
中更改文本时,将启用PushButton
,但我在信号和插槽中找不到任何此类选项。有人可以帮忙吗?
你必须写一个自定义插槽(这很容易)。
将此添加到您的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,请执行以下操作:
在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());
});
...
}