如何在填充某些qlineedit后激活qt中的按钮?因此,在修改了一些行编辑后,该按钮应该被启用
答案 0 :(得分:1)
创建一个自定义插槽,您可以在其中启用按钮。将QLineEdit::textChanged
连接到此插槽(如果您有多行编辑,请将它们全部连接起来):
您的班级标题:
public slots:
void textChanged();
班上的某个地方:
...
connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(textChanged()));
...
void MyClass::textChanged()
{
ui->button->setEnabled(true);
}
如果您不想在以编程方式更改文本时触发插槽,也可以使用QLineEdit::textEdited
信号而不是textChanged
。
编辑:以下是完整示例,您只需在MainWindow UI中添加行编辑和按钮(我也禁用了UI中的按钮)。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QList>
#include <QLineEdit>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void textChanged();
private:
Ui::MainWindow *ui;
QList<QLineEdit*> _editList;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->lineEdit1, SIGNAL(textEdited(QString)), this, SLOT(textChanged()));
connect(ui->lineEdit2, SIGNAL(textEdited(QString)), this, SLOT(textChanged()));
connect(ui->lineEdit3, SIGNAL(textEdited(QString)), this, SLOT(textChanged()));
_editList.append(ui->lineEdit1);
_editList.append(ui->lineEdit2);
_editList.append(ui->lineEdit3);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::textChanged()
{
int modified_count = 0;
for(int i = 0; i < _editList.length(); i++)
{
if(!_editList[i]->text().isEmtpy)
modified_count++;
}
if(modified_count >= 3)
ui->pushButton->setEnabled(true);
}