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

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

Страниц: [1] 2 3 ... 5   Вниз
  Печать  
Автор Тема: Как при нажатии кнопки выполнить консольную команду?  (Прочитано 22624 раз)
wildcat
Гость
« : Январь 24, 2012, 16:24 »

Здравствуйте. Недавно начал учить qt4, до этого работал в с++ и то не очень серьезно. Буду очень признателен за помощь.

Имеется 6 текстовых объектов, в которые пользователь вводит параметры, нажав кнопку выполнить, должны выполнится консольная команда если все поля заполнены:

команда edit_1 edit_2 edit_3 edit_4 edit_5 edit_6

Записан
mutineer
Гость
« Ответ #1 : Январь 24, 2012, 16:25 »

QProcess тебе поможет
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Январь 24, 2012, 16:26 »

Читай.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
wildcat
Гость
« Ответ #3 : Январь 24, 2012, 16:53 »

Извините за наглость, а можно кусок кода, приблизительно как это реализуется
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Январь 24, 2012, 16:57 »

Там же все есть:
Код
C++ (Qt)
QObject *parent;
    ...
    QString program = "./path/to/Qt/examples/widgets/analogclock";
    QStringList arguments;
    arguments << "-style" << "motif";
 
    QProcess *myProcess = new QProcess(parent);
    myProcess->start(program, arguments);
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
wildcat
Гость
« Ответ #5 : Январь 25, 2012, 08:58 »

Спасибо большое
Записан
wildcat
Гость
« Ответ #6 : Январь 25, 2012, 09:41 »

Как сделать так что бы при заполнении полей активировалась кнопка "Выполнить"? Вот как сделать при заполнении одного поля, нашел в книги, а как сделать при заполнении всех обязательных полей не пойму.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Январь 25, 2012, 09:47 »

Изменение всех полей коннектишь на слот и в нем проверяешь все поля на заполненность.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
wildcat
Гость
« Ответ #8 : Январь 26, 2012, 16:43 »

Извините, а можно что нибудь для примера? Без примера не получается... Долблюсь как рыба об лед.
Записан
mutineer
Гость
« Ответ #9 : Январь 26, 2012, 16:44 »

Ну показывай как долбишься
Записан
wildcat
Гость
« Ответ #10 : Январь 27, 2012, 10:43 »

не совсем пойму как сделать проверку для нескольких кнопок, вот сделал только для первой.



usbcontroller.h:
Код
C++ (Qt)
#ifndef USBCONTROLLER_H
#define USBCONTROLLER_H
#include <QDialog>
#include "ui_usbController.h"
 
class usbController : public QDialog, public Ui::usbController
{
   Q_OBJECT
public:
   usbController(QWidget *parent = 0);
private slots:
   void on_lineEdit_1_textChanged();
};
#endif // USBCONTROLLER_H
 
usbcontroller.cpp:
Код
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()));
 
}
void usbController::on_lineEdit_1_textChanged()
{
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(lineEdit_1->hasAcceptableInput());
}
 
main.cpp
Код
C++ (Qt)
#include <QApplication>
#include <usbcontroller.h>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   usbController *dialog = new usbController;
   dialog->show();
   return app.exec();
}
 
Записан
mutineer
Гость
« Ответ #11 : Январь 27, 2012, 10:56 »

Ну например
buttonBox->button(QDialogButtonBox::Ok)->setEnabled(lineEdit_1->hasAcceptableInput() && lineEdit_2->hasAcceptableInput());
Записан
wildcat
Гость
« Ответ #12 : Январь 27, 2012, 11:01 »

так не работает, пробовал уже... Кнопка становится сразу активной, как только текст появляется в первом edit.
а надо что бы пока все lineEdit не будут заполненными, кнопка была не активна.
Записан
mutineer
Гость
« Ответ #13 : Январь 27, 2012, 11:04 »

А какой валидатор или маска стоят на полях ввода?
Записан
wildcat
Гость
« Ответ #14 : Январь 27, 2012, 11:08 »

Нет маски и нет валидатора, я так понимаю валидатор используется для проверки маски, а тут маска не нужна, только проверка заполнения полей. Может что то не так понимаю
Записан
Страниц: [1] 2 3 ... 5   Вверх
  Печать  
 
Перейти в:  


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