我使用Qt Designer创建了一个.ui文件,在我创建的PushButton
文件中最初被禁用,我也有一个LineEdit
。我希望关联LineEdit
和PushBotton
,以便在LineEdit
中更改文字后,PushButton
将启用,但我在信号中找不到任何此类选项和插槽。有人可以帮忙吗?
答案 0 :(得分: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,请执行以下操作:
答案 1 :(得分: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());
});
...
}