Russian Qt Forum
Ноябрь 24, 2024, 01:26
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Запустить gawk-bash-скрипт из оконного приложения Qt.
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Запустить gawk-bash-скрипт из оконного приложения Qt. (Прочитано 7382 раз)
Фёдор
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
:
Июнь 30, 2006, 00:46 »
Я novice в Qt. Работаю под Линуксом Мандрэйк 10.1
У меня есть оконное приложение, из которого надо запустить сценарий написанный на смеси gawk-bash и полученную информацию вернуть обратно в моё приложения для обработки и вывода на экран. Как это сделать подскажите помогите?
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #1 :
Июнь 30, 2006, 08:47 »
смотри QProccess
помогает запускать другие приложения
Записан
Фёдор
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #2 :
Июнь 30, 2006, 23:41 »
Спасибо. Смотрю уже:)
добавлено спустя 11 часов 27 минут:
Ещё вопрос! Функции в qt объявляются также как в С?
в отдельном .h файле? Суть в том что я сделал функцию чтобы каждый раз не писать кучу кода, а вставить её и всё, записал в отдельный necfunctions.h файл тип QStringList func() { ... }. Написал в заголовке ui.h файла своей формы #include"necfunctions.h"(хе и в треугольных скобках тоже пробовал). Тоже самое в main.cpp сделал. И оно при компиляции мне в итоге говорит что функция моя func() находящаяся в necfunctions.h декларирована дважды, и что до этого она была декларирована в ./necfunctions.h . То есть масло масленное выходит.........чо делать.
Записан
Admin
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1988
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #3 :
Июль 01, 2006, 08:55 »
часто пользуют такую конструкцию
в начале necfunctions.h
#ifndef _NEC_FUNC_H
#define _NEC_FUNC_H
твой код
#endif //_NEC_FUNC_H
Записан
Фёдор
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #4 :
Июль 05, 2006, 23:59 »
#ifndef NEC_FUNC_HI
#define NEC_FUNC_HI
#include <qdir.h>
#include <qfile.h>
#include <qstringlist.h>
#include <qstring.h>
#include <qcombobox.h>
QStringList allpostslist()
{
QString post_ID,post_place,post_status;
QString configDirPath=QDir::homeDirPath()+"/monitor/config";
QDir di(configDirPath);
di.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
di.setSorting(QDir::Name);
QStringList list_Dir=di.entryList(); /*список всех конфигурационных файлов и в то же время АйДи номеров//строка с АйДи номером пост*/
//файл которому будет присвоено название поста
QDir::setCurrent(configDirPath); /*устанавливается текущий рабочий каталог с конфигурационными файлами*/
int co1,co2;
for(co1=0;list_Dir[co1]!=NULL;co1++)
{
post_ID=list_Dir[co1];
QFile post_file;
post_file.setName(post_ID);
if(post_file.open(IO_ReadOnly))
{
QTextStream file_stream(&post_file);
for(co2=0;co2!=6;co2++)
{
post_place=file_stream.readLine();
if(co2==1 && post_place=="1")
{
post_status=QString::fromLocal8Bit("ВКЛ.");
} else if(co2==1 && post_place=="0") {post_status=QString::fromLocal8Bit("ВЫКЛ.");}
}
list_Dir[co1]=post_ID+" "+post_status+" "+post_place;
}
post_file.close();
}
return list_Dir;
}
#endif
Написал я вот такую тему в necfunctions.h.
Сделал #include "necfunctions.h" в main.cpp и в formpostcontrol.h.
Нажимаю make и оно мне говорит.
qmake -o Makefile postcontrol.pro
g++ -c -pipe -Wall -W -O2 -fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt3/mkspecs/default -I. -I/usr/lib/qt3//include -I.ui/ -I. -I.moc/ -o .obj/main.o main.cpp
g++ -o postcontrol .obj/main.o .obj/formPostControl.o .obj/moc_formPostControl.o -L/usr/lib/qt3//lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
.obj/formPostControl.o(.text+0xdfc0): In function `allpostslist()':
: multiple definition of `allpostslist()'
.obj/main.o(.text+0x0): first defined here
collect2: ld returned 1 exit status
При этом если включить этот necfunctions.h только в formpostcontrol.h а в мэйн просто тупо расписать код целиком. Всё работает. Объясните что я написал не так...
Это не критично работа можно сказать сделана и без этого, но просто хочу для себя понять и разобраться. ПРИГОДИТСЯ ведь.
Записан
Deiv
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #5 :
Июль 06, 2006, 07:47 »
Обычно в ашке прописываются прототипы функций
а вы там прописали тело функции и подключили к двум модулям
косяк
Записан
Фёдор
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #6 :
Июль 06, 2006, 23:11 »
Прошу прощения если я удивлю вас. Что есть прототип функции?
добавлено спустя 2 минуты:
Где в таком случае описывается сама функция? В теле программы?
Записан
Deiv
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #7 :
Июль 07, 2006, 09:23 »
Цитата: "Фёдор"
Прошу прощения если я удивлю вас. Что есть прототип функции?
добавлено спустя 2 минуты:
Где в таком случае описывается сама функция? В теле программы?
Мда ...
Читать вводные лекции по С или С++ както не испытываю желания
В инете много электронных учебников по этим языкам
Конкретно по вашему вопросу:
http://www.intuit.ru/department/se/pbmsu/9/5.html
Слегка кривовато, но сойдет.
Записан
Фёдор
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #8 :
Июль 07, 2006, 12:46 »
Cпасибо)
Записан
Фёдор
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #9 :
Июль 18, 2006, 09:39 »
У меня возникла проблема.
Моё оконное приложение может запускать, внешние файлы на gawk-bash-perl, их работа достаточно долгая. Выход с stderr и stdout идёт в отдельное поле textEdit. Иногда при выключенных приборах, получается так что запустив эту внешнюю программу, совершается долгая холостая работа(это можно видеть по stdout). И я сделал кнопочку, которая должна убивать процесс. Но тут и умер.
QProcess *proc;
Потом в SLOT отдельных связанных с кнопками я делал нечто вроде
formPostControl::text()
{
proc=new QProcess(this);
......//вставлял сюда аргументы и т д делал нужные connect и приложение работало замечательно.
}
//а при переходе к SLOT убивающему процесс
formPostControl::stopProc()
{
if(proc->isRunning())
{
proc->tryTerminate();
QTimer::singleShot( 5000, proc, SLOT( kill() ) );
}
else
{
textEditWorkingMess->setText(QString::fromLocal8Bit("Работающих процессов нет"))
}
}
При компиляции проскакивает нормально. А при нажатии на кнопку в окне(заведомо зная что процесс щас не запущен) происходит вылет и говорится segmentation fault. Всё дело в proc->isRunning(). Что здесь неправильно? Я пробовал просто без if взять tryTerminate() и всё. При запущенном процессе оно его останавливает, а при отсутсвии запущенных процессов, вылетает моё окно.
Записан
Deiv
Гость
Запустить gawk-bash-скрипт из оконного приложения Qt.
«
Ответ #10 :
Июль 18, 2006, 11:07 »
Скорее всего, до этого момента объект *proc не создан
и в указателе proc записан null или мусор
соответственно прога и ломается
Цитата: "Фёдор"
if(proc->isRunning())
попробуй предварительно проверять существование объекта
if (!proc)
{
// работа с указателем прос
}
else
{
// прога не запущена
}
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...