crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QLineEdit проверить, Как проверить что информация не нулевая?
fortero
  опции профиля:
сообщение 11.5.2011, 1:54
Сообщение #11


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(breeve @ 11.5.2011, 1:37) *
Цитата(fortero @ 11.5.2011, 2:32) *
Я уже думал об этом, но нужно не только изминение отследить но и ч то бы оно не пустым осталось!

Если я тебя правильно понял, то ты в этом слоте делай обработку т.о. если строка пустая заблокировать кнопку, если нет то разблокировать.
Ну и изначально блокируешь кнопку, чтобы пользователь в любом случае что-нибудь ввел.

Верно Вы понимаете, вот я набросал пример, отбросив лишенее:
#include <QtGui>

int main(int argc, char **argv){
    QApplication app(argc, argv);
    QDialog dia;
    QLineEdit ed;
    QHBoxLayout lay;
    QPushButton btn("OK");
    btn.setDisabled(true);
    if() //Вставить услове которое разблокирует кнопку ????????
    btn.setDisabled(false);
    lay.addWidget(&ed, 1);
    lay.addWidget(&btn);
    dia.setLayout(&lay);
    dia.resize(250, 40);
    dia.show();
    return app.exec();
}


Сообщение отредактировал fortero - 11.5.2011, 1:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 11.5.2011, 2:18
Сообщение #12


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Или можешь сделать просто флаг - переменную bool isEmpty. Которая изначально будет тру(строка пустая). И при любом изменении текста LineEdit'а будет проверяться пустая ли строка. А как это сделать читай выше. Сигнал к слоту, и в нем обрабатываешь и изменяешь переменную.

Пример твой не прокатит, насколько я знаю чтобы сделать слот нужно в любом случае класс создавать свой.
Проверенный код:
BLOCKBUTTON_H
#ifndef BLOCKBUTTON_H
#define BLOCKBUTTON_H

#include <QtGui>

class BlockButton : public QWidget
{
    Q_OBJECT

public:
    BlockButton(QWidget *parent = 0);
    ~BlockButton(){};
private:
    QPushButton *button;
    QLineEdit *line;
    QVBoxLayout *vLay;
private slots:
    void s_blockButton(QString);
};

#endif // BLOCKBUTTON_H
BLOCKBUTTON.CPP
#include "blockbutton.h"

BlockButton::BlockButton(QWidget *parent)
    : QWidget(parent)
{
    vLay = new QVBoxLayout;
    button = new QPushButton("Next");
    button->setDisabled(true);
    line= new QLineEdit;
    connect(line, SIGNAL(textChanged(QString)),
            this, SLOT(s_blockButton(QString)));


    vLay->addWidget(line);
    vLay->addWidget(button);
    setLayout(vLay);
}

void BlockButton::s_blockButton(QString s)
{
    if(s.isEmpty())
        button->setDisabled(true);
    else
        button->setDisabled(false);
}


Сообщение отредактировал breeve - 11.5.2011, 2:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 11.5.2011, 3:43
Сообщение #13


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо помогло, пару маленьких поправок и всё стало так как я хочу!
Но вот снова не задача, а как быть когда надо обслуживать несколько поолей, если в 3 из 9 полей нет данных то кнопка не должна быть активная, как это орагнизовать???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MJIbIu
  опции профиля:
сообщение 11.5.2011, 8:57
Сообщение #14


Студент
*

Группа: Участник
Сообщений: 38
Регистрация: 14.4.2010
Пользователь №: 1630

Спасибо сказали: 3 раз(а)




Репутация:   0  


Цитата(fortero @ 11.5.2011, 4:43) *
Спасибо помогло, пару маленьких поправок и всё стало так как я хочу!
Но вот снова не задача, а как быть когда надо обслуживать несколько поолей, если в 3 из 9 полей нет данных то кнопка не должна быть активная, как это орагнизовать???

Может быть есть есть и другие способы, но в лоп приходит тока мысль создать массив из bool переменных. При каждом вводе заполнять его, не пустое или пустое. потом его проверять на все true.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
breeve
  опции профиля:
сообщение 12.5.2011, 10:51
Сообщение #15


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Цитата(fortero @ 11.5.2011, 4:43) *
Спасибо помогло, пару маленьких поправок и всё стало так как я хочу!
Но вот снова не задача, а как быть когда надо обслуживать несколько поолей, если в 3 из 9 полей нет данных то кнопка не должна быть активная, как это орагнизовать???

Подключаешь сигналы textChanged(QString), от трех LineEdit'ов к одному слоту и там обрабатываешь.
Слот выглядит примерно так:
void BlockButton::s_blockButton()
{
    bool first = lineOne->text().isEmpty();
    bool second = lineTwo->text().isEmpty();
    bool third = lineThree->text().isEmpty();
    if(first || second || third)
         button->setDisabled(true);
    else
         button->setDisabled(false);
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 13.5.2011, 1:43
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем оргрмное спасибо!
Всё работает так как я и представлял!

P.S. А подскажите а какой функцией можно измереть длинну строки, в классе QString?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 13.5.2011, 6:35
Сообщение #17


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(fortero @ 13.5.2011, 3:43) *
А подскажите а какой функцией можно измереть длинну строки, в классе QString?


int QString::size () const
Returns the number of characters in this string.
The last character in the string is at position size() - 1. In addition, QString ensures that the character at position size() is always '\0', so that you can use the return value of data() and constData() as arguments to functions that expect '\0'-terminated strings.

Все что курсивом для общего развития. Существуют так называемые C-строки и Pascal-строки. Первые произвольной длинны, последний символ - \0, счет ведется с нулевого символа. Вторые длинной до 255 символов, счет ведется с 1 символа, т.к. нулевой содержит длину строки (один байт).

Сообщение отредактировал silver47 - 13.5.2011, 6:39
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.5.2011, 7:20
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(fortero @ 11.5.2011, 2:01) *
выяснить QLineEdit полные или пустые???
QLineEdit::text() + QString::isEmpty()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 19:28