Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pablo от Ноября 23, 2004, 15:00



Название: QLineEdit
Отправлено: pablo от Ноября 23, 2004, 15:00
Я создаю два окна для ввода с клавиатуты, firstLineEdit и secondLineEdit
потом создаю пушбатон, unionButton.
Вначале она неактивирована.

Можно ли связать два этих окна так, чтобы кнопка активировалась только тогда когда обе строки не пустые ???
Если писать как:

connect(firstLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableUnionButton(const QString&)));

connect(secondLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(enableUnionButton(const QString&)));

connect(unionButton, SIGNAL(clicked()), this, SLOT(unionClicked()));

то кнопка активируется когда хотя бы одна строка не пустая, как исправить этот недостаток ???


Название: QLineEdit
Отправлено: Zmey от Ноября 23, 2004, 16:40
Написать слот, который будет проверять обе лайнэдит и
Цитировать
когда обе строки не пустые
делать enableUnionButton. Ну и подконнектить этот слот, естественно к обоим лайеэдитам на  SIGNAL(textChanged(const QString &)).


Название: QLineEdit
Отправлено: pablo от Ноября 23, 2004, 16:51
Так я так и делаю, только вся проблема в том, что если хоть одна строка не пустая то кнопка активируется,
 а мне надо сделать так, чтобы она активировалась только тогда когда не пустые обе строки :(


Название: QLineEdit
Отправлено: Zmey от Ноября 23, 2004, 17:28
Цитата: "pablo"
Так я так и делаю, только вся проблема в том, что если хоть одна строка не пустая то кнопка активируется,
 а мне надо сделать так, чтобы она активировалась только тогда когда не пустые обе строки :(

Я ж написал: проверять обе сроки, и если обе не пусты, то setEnable(TRUE). Эта проверка в функции, а функция в SLOT(), который в connect(firstLineEdit, SIGNAL(textChanged(const QString &)),... и connect(secondLineEdit, SIGNAL(textChanged(const QString &)),...
Что не ясно?..


Название: QLineEdit
Отправлено: Hellenna от Ноября 23, 2004, 22:33
можно сделать так

Код:
connect(firstLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkEmpty(const QString&)));

connect(secondLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkEmpty(const QString&)));

checkEmpty(const QString& s)
{
     if(firstLineEdit->text().isEmpty()&&secondLineEdit->text().isEmpty())
             unionButton->setEnabled(true);
}


Название: QLineEdit
Отправлено: Zmey от Ноября 24, 2004, 09:38
Цитата: "Hellenna"
можно сделать так

Код:
connect(firstLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkEmpty(const QString&)));

connect(secondLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(checkEmpty(const QString&)));

checkEmpty(const QString& s)
{
     if(firstLineEdit->text().isEmpty()&&secondLineEdit->text().isEmpty())
             unionButton->setEnabled(true);
}


Точно, только:  if(!(firstLineEdit->text().isEmpty()||secondLineEdit->text().isEmpty()));
А лучше
checkEmpty(const QString& s)
{
             unionButton->setEnabled(!(firstLineEdit->text().isEmpty()||secondLineEdit->text().isEmpty()));
}


Название: QLineEdit
Отправлено: Hellenna от Ноября 24, 2004, 15:54
Цитата: "Zmey"


Точно, только:  if(!(firstLineEdit->text().isEmpty()||secondLineEdit->text().isEmpty()));

согласна. просто написала не задумываясь! так оно всегда бывает...  :)  :)


Название: QLineEdit
Отправлено: pablo от Ноября 24, 2004, 19:04
Спасибо.
Попробую
Если не получися,то спрошу снова. :)