LINUX.ORG.RU

QT TextChanged

 


0

2

Я не могу понять, как сделать проверку ввода текста. Тоесть если LineEdit и если я туда ничего не записываю, то кнопка «OK» не срабатывает, если же я вписал что-то, то оно включается тоесть активируется и я могу нажать на эту кнопку. Как сотворить это?

Ну ты же сам пишешь, что у QLineEdit есть сигнал TextChanged. Кнопка выключена по умолчанию. По приходу сигнала TextChanged кнопка включается. В чём проблема-то?

MimisGotAPlan
()
Ответ на: комментарий от MimisGotAPlan

Я написал и в заголовочном файле и в исходном, но ничего не работает, может кто-то свой пример напишет. У меня просто правда не пашит

notname
() автор топика

Загол. файл #ifndef NEWF_H #define NEWF_H

#include <QDialog> #include <QString> #include <QLineEdit> #include <QPushButton>

namespace Ui { class newF; }

class newF : public QDialog { Q_OBJECT

public: explicit newF(QWidget *parent = 0); ~newF();

private: Ui::newF *ui;

private slots: void cls(){ close(); } void Ok(); void TextChanged(const QString &text);

};

#endif // NEWF_H

Исходный файл

#include «newf.h» #include «ui_newf.h» #include <QLabel> #include <QHBoxLayout> #include <QVBoxLayout> #include <QPushButton> #include <QLineEdit> #include <QString>

#include «stylehelper.h» #include «mainarea.h»

newF::newF(QWidget *parent) : QDialog(parent), ui(new Ui::newF) { ui->setupUi(this);

this->setModal(true); this->setWindowFlags(Qt::FramelessWindowHint); this->setStyleSheet(StyleHelper::getQDialogStyleSheet());

ui->pushButton->setStyleSheet(«QPushButton {» «background-color: #535353;» «border: none;» «};»); ui->cls->setStyleSheet(«QToolButton {» «background-color: #535353;» «border: none;» «};»); QLabel *newf = new QLabel(«Name:»,this); QLineEdit *name = new QLineEdit(this); name->setStyleSheet(«QLineEdit {» «border: 1px double black;» «};»); newf->setBuddy(name); connect(name, SIGNAL(textChanged(const QString &)), this, SLOT(TextChanged(const QString &text)));

QPushButton *ok = new QPushButton(«OK»,this); ok->setDefault(true); ok->setEnabled(false); connect(ok,SIGNAL(triggered()),this,SLOT(Ok())); QPushButton *close = new QPushButton(«Close»,this); connect(close,SIGNAL(clicked()),this,SLOT(cls()));

QHBoxLayout *hb1 = new QHBoxLayout; hb1->addWidget(newf); hb1->addWidget(name); QHBoxLayout *hb = new QHBoxLayout; hb->addWidget(ok); hb->addWidget(close); QVBoxLayout *vb = new QVBoxLayout; vb->addLayout(hb1); vb->addLayout(hb);

setLayout(vb); }

newF::~newF() { delete ui; }

void newF::Ok(){ MainArea *mdi = new MainArea(); mdi->show(); }

void newF::TextChanged(const QString &text){ if(!name->text().isEmpty()) ok->setEnabled (true); }

Я думаю, что так возможно будет легче

notname
() автор топика
Ответ на: комментарий от MimisGotAPlan

вы ищите потоенный смысл там где его нет. подколки небыло, надо было как-то назвать переменную, мог и описаться.

Silerus ★★★★
()
Ответ на: комментарий от notname

когда ты пишешь сообщение там под полем ввода с названием сообщение есть две строчки вторая из которых гласит Внимание: прочитайте описание разметки LORCODE вот если тыцнуть на прочитайте описание разметки LORCODE и сделать как там написано то это облегчит жизнь тем кто пожелает тебе помочь и особенно тебе.

alexku
()

header file

#ifndef NEWF_H
#define NEWF_H

#include <QDialog>
#include <QString>
#include <QLineEdit>
#include <QPushButton>

namespace Ui {
class newF;
}

class newF : public QDialog
{
    Q_OBJECT

public:
    explicit newF(QWidget *parent = 0);
    ~newF();

private:
    Ui::newF *ui;

    QPushButton *ok;
    QLineEdit *name;

private slots:
    void cls(){
        close();
    }
    void Ok();
    void TextChanged(const QString &text);

};

#endif // NEWF_H

Исходный файл
#include "newf.h"
#include "ui_newf.h"
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLineEdit>
#include <QString>

#include "stylehelper.h"
#include "mainarea.h"

newF::newF(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::newF)
{
    ui->setupUi(this);

    this->setModal(true);
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->setStyleSheet(StyleHelper::getQDialogStyleSheet());

    ui->pushButton->setStyleSheet("QPushButton {"
                                  "background-color: #535353;"
                                  "border: none;"
                                  "};");
    ui->cls->setStyleSheet("QToolButton {"
                           "background-color: #535353;"
                           "border: none;"
                           "};");
    QLabel *newf = new QLabel("Name:",this);
    name = new QLineEdit(this);
    name->setStyleSheet("QLineEdit {"
                        "border: 1px double black;"
                        "};");
    newf->setBuddy(name);
    connect(name, SIGNAL(textChanged(const QString &)), this, SLOT(TextChanged(const QString &text)));

    ok = new QPushButton("OK",this);
    ok->setDefault(true);
    ok->setEnabled(false);
    connect(ok,SIGNAL(triggered()),this,SLOT(Ok()));
    QPushButton *close = new QPushButton("Close",this);
    connect(close,SIGNAL(clicked()),this,SLOT(cls()));

    QHBoxLayout *hb1 = new QHBoxLayout;
    hb1->addWidget(newf);
    hb1->addWidget(name);
    QHBoxLayout *hb = new QHBoxLayout;
    hb->addWidget(ok);
    hb->addWidget(close);
    QVBoxLayout *vb = new QVBoxLayout;
    vb->addLayout(hb1);
    vb->addLayout(hb);

    setLayout(vb);
}

newF::~newF()
{
    delete ui;
}

void newF::Ok(){
    MainArea *mdi = new MainArea();
    mdi->show();
}

void newF::TextChanged(const QString &text){
    if(!name->text().isEmpty())
    ok->setEnabled (true);
}

notname
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.