Russian Qt Forum
Ноябрь 24, 2024, 12:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3 4 5   Вниз
  Печать  
Автор Тема: Как при нажатии кнопки выполнить консольную команду?  (Прочитано 23391 раз)
mutineer
Гость
« Ответ #15 : Январь 27, 2012, 11:19 »

Цитировать
acceptableInput : const bool

This property holds whether the input satisfies the inputMask and the validator.

По умолчанию это свойство равно true.

Функции доступа: bool    hasAcceptableInput () const

hasAcceptableInput() используется если есть маска и валидатор. Зачем он тебе, если ты эти сущности не используешь??

Может лучше text().isEmpty() ?
Записан
wildcat
Гость
« Ответ #16 : Январь 27, 2012, 11:36 »

да я нуб, 4й день день только сижу с qt. Как в книге было написана, на примере и сделал...
Записан
wildcat
Гость
« Ответ #17 : Январь 27, 2012, 12:49 »

задачу поставили, теперь маюсь. Есть консольная программа, на нее пытаюсь разработать морду. Как то не клеится.
Записан
mutineer
Гость
« Ответ #18 : Январь 27, 2012, 12:51 »

да я нуб, 4й день день только сижу с qt. Как в книге было написана, на примере и сделал...

Это отмазка, чтобы не читать доки?
text().isEmpty() попробовал?
Записан
wildcat
Гость
« Ответ #19 : Январь 27, 2012, 12:57 »

Все с удовольствием читаю. Понимание приходит со временем. Без документа не куда. Но больше помогают примеры, в примере наглядно видно.
Записан
wildcat
Гость
« Ответ #20 : Январь 27, 2012, 13:03 »

text().isEmpty() - пробовал. но видать что то не туда вставляю.

Вот создал слот

private slots:
void on_lineEdit_1_textChanged();

Проверяю на заполнение:

void usbController::on_lineEdit_1_textChanged()
{

    buttonBox->button(QDialogButtonBox::Ok)->setEnabled(lineEdit_1->text().isEmpty());
}
Записан
mutineer
Гость
« Ответ #21 : Январь 27, 2012, 13:07 »

Код
C++ (Qt)
void usbController::on_lineEdit_1_textChanged()
{
   buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!(lineEdit_1->text().isEmpty()) && !(lineEdit_2->text().isEmpty()) );
}
Записан
wildcat
Гость
« Ответ #22 : Январь 27, 2012, 13:43 »

Код
C++ (Qt)
void usbController::on_lineEdit_1_textChanged()
{
   buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!(lineEdit_1->text().isEmpty()) && !(lineEdit_2->text().isEmpty()) );
}

Спасибо большое помогло. Правда когда только указываю  для проверки один lineEdit:
 
Код
C++ (Qt)
void usbController::on_lineEdit_1_textChanged()
{
   buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!(lineEdit_1->text().isEmpty()));
}

Не пойму, это для каждого lineEdit надо делать слот?
on_lineEdit_1_textChanged()
on_lineEdit_2_textChanged()
и т.д.?
Записан
mutineer
Гость
« Ответ #23 : Январь 27, 2012, 13:45 »

нет, надо все коннектить в один слот и там все же и проверять
Записан
wildcat
Гость
« Ответ #24 : Январь 27, 2012, 13:57 »

вот например создаю слот:

private slots:

void textChanged();

Вот создаю проверку и все вставляю в один слот:

Код
C++ (Qt)
 
void usbController::textChanged()
{
   buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!(lineEdit_1->text().isEmpty()) && !(lineEdit_2->text().isEmpty()) );
}

только тогда вообще ничего не работает...
P.S. Извините, за глупые вопросы.
Записан
mutineer
Гость
« Ответ #25 : Январь 27, 2012, 13:58 »

А сигналы от LineEdit'ов к слоту коннектишь?
Записан
wildcat
Гость
« Ответ #26 : Январь 27, 2012, 14:25 »

этого не делал.

Вот как понимаю взаимодействие слота и сигнала.
Есть объект_1, при событии вызывает сигнал_1
Есть объект_2, у него есть слот отвечающий на этот сигнал.

Т.е. connect(объект_1, сигнал_1, объект_2, слот_1)

Так понимаю каждый LineEdit надо законнектить на этот слот?
Записан
mutineer
Гость
« Ответ #27 : Январь 27, 2012, 14:27 »

Путь твой лежит в царство документации Qt и начинать стоит отсюда http://doc.crossplatform.ru/qt/4.7.x/signalsandslots.html
Записан
wildcat
Гость
« Ответ #28 : Январь 27, 2012, 15:21 »

Спасибо большое)))
получилось вот так:

Код
C++ (Qt)
#include <QtGui>
 
#include "usbcontroller.h"
 
 
usbController::usbController(QWidget *parent) : QDialog(parent)
{
   setupUi(this);
  buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
 
   connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
   connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
 
   connect(lineEdit_1, SIGNAL(textChanged(QString)), this, SLOT(Changedtext()));
   connect(lineEdit_2, SIGNAL(textChanged(QString)), this, SLOT(Changedtext()));
}
 
 
 
void usbController::Changedtext()
{
 
   bool Ok = true;
   {
       Ok &= !lineEdit_1->text().isEmpty();
       Ok &= !lineEdit_2->text().isEmpty();
       if (Ok){
          // emit enableNext();
           buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
       }
   }
}
Записан
sudo
Гость
« Ответ #29 : Январь 27, 2012, 18:04 »

Ой, зачем такие сложности

Код:
 
void usbController::changedText()
{
    buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!lineEdit_1->text().isEmpty() && !lineEdit_2->text().isEmpty())
}
Записан
Страниц: 1 [2] 3 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.134 секунд. Запросов: 21.