Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt4]не показывается QDialog 
V
    Опции темы
anatox91
Дата 12.5.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



добрый день! проблема в следующем - при вызове функции exec() почему-то не показывается само окно QDialog... пробовал уже и ресизить, и двигать, и вызывать вместо exec() функцию show() - ничего не помогает  smile 
вот код:
Compilation.h
Код

#ifndef COMPILATION_H_
#define COMPILATION_H_

#include <QDialog>
#include <QProcess>
#include <QTextEdit>
#include <QPushButton>
class QString;
class Compilation : public QDialog {
      Q_OBJECT
private:
      QProcess *process;
      QTextEdit *processOutput;
      QPushButton *cancel;
      QPushButton *ok;
      QStringList args;
public:
       Compilation(QString &filename, QWidget *parent = 0);
public slots:
       void slotReadStdout();
       void slotFinished(int exitCode, QProcess::ExitStatus status);    
};
#endif


Compilation.cpp
Код

#include <QtGui>
#include "Compilation.h"

Compilation::Compilation(QString &filename, QWidget *parent) : QDialog(parent, Qt::Window | Qt::WindowSystemMenuHint) {
                                 setWindowTitle("Compilation");
                                 processOutput = new QTextEdit(this);
                                 
                                 cancel = new QPushButton("Cancel", this);
                                 connect(cancel, SIGNAL(clicked()), this, SLOT(reject()));
                                 
                                 ok = new QPushButton("OK", this);
                                 connect(ok, SIGNAL(clicked()), this, SLOT(accept()));
                                 ok->setEnabled(false);
                                 
                                 args << "-c" << filename;
                                 
                                 process = new QProcess(this);
                                 connect(process, SIGNAL(readyReadStandardOutput()), this, SLOT(slotReadStdout()));
                                 connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotFinished(int, QProcess::ExitStatus)));
                                 
                                 QHBoxLayout *btnLayout = new QHBoxLayout;
                                 btnLayout->addWidget(ok);
                                 btnLayout->addWidget(cancel);
                                 
                                 QVBoxLayout *mainLayout = new QVBoxLayout;
                                 mainLayout->addWidget(processOutput);
                                 mainLayout->addLayout(btnLayout);
                                 
                                 setLayout(mainLayout);
                                 
                                 process->start("g++", args);
}
void Compilation::slotReadStdout() {
     processOutput->append(QString(process->readAllStandardOutput()));
}
void Compilation::slotFinished(int exitCode, QProcess::ExitStatus status) {
     QMessageBox::information(this, "Finished", "Compilation is finished");
     ok->setEnabled(true);
}


ну а вызываю в MainWindow.cpp так:
Код

void MainWindow::compile() {
     Compilation *compil = new Compilation(curFile, this);
     compil->exec();
}


ЗЫ собсно пытаюсь написать что-то наподобие простейшей IDE  smile 


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
SABROG
Дата 12.5.2008, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А что дебаггер говорит ? Вызывает ли программа конструктор ? Что-нить выводит в консоль ?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
anatox91
Дата 12.5.2008, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



[censored 6]... снова я ступил... дебаггер сказал что нет такого слота - MainWindow::compile() ... я объявил его как простую функцию  smile  идиот одним словом  smile 
но теперь другая проблема - как только я запускаю MainWindow::compile() мне тут же выскакивает окошко с сообщением что компиляция завершена... и никакого текста... и ничего соответственно не скомпилировано
можете что-нибудь подсказать?
сосбно компилить пытаюсь в винде, с установленным MinGW, все пути нужные прописаны

Это сообщение отредактировал(а) anatox91 - 12.5.2008, 15:38


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
SABROG
Дата 12.5.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Может где-то в этой стороне косяк:

Цитата

When the process exits, QProcess reenters the NotRunning state (the initial state), and emits finished(). 


Может висит где-то в процессах или еще что.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
anatox91
Дата 12.5.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



в процессах не висит, проверил... мне вот еще очень интересно почему на QTextEdit этот процесс ничего не выводит...
gdb молчит... ниче не пишет...

сейчас еще попробую понаставлять проверок - посмотрим что возвращает QProcess::ExitStatus

Это сообщение отредактировал(а) anatox91 - 12.5.2008, 16:21


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Любитель
Дата 12.5.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



1. Он вобще запускается? Сигнал started срабатывает?
2. Может рабочую директорию поставить?


--------------------
PM MAIL ICQ Skype   Вверх
anatox91
Дата 12.5.2008, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



Цитата(Любитель @  12.5.2008,  16:48 Найти цитируемый пост)
1. Он вобще запускается? Сигнал started срабатывает?

и на started и на finished поставил слоты с месседж-боксами - и тот и тот сигнал срабатывает

Цитата(Любитель @  12.5.2008,  16:48 Найти цитируемый пост)
2. Может рабочую директорию поставить?

в смысле?


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Любитель
Дата 12.5.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(anatox91 @  12.5.2008,  17:47 Найти цитируемый пост)
в смысле? 

setWorkingDirectory, имеловсь ввиду. Посмотри ещё - мож он что в stderr пихает, игнорирую stdout (ну мало ли...).


--------------------
PM MAIL ICQ Skype   Вверх
anatox91
Дата 12.5.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



поставил проверку на NormalExit/CrashExit  - пишет что NormalExit  smile 

а зачем ему вообще нужна workingDirectory? для чего?
поставил ее в папку C:\MinGW\bin, так теперь когда открываю диалог то он просто торчит и сигнала финиша не дает


Это сообщение отредактировал(а) anatox91 - 12.5.2008, 18:08


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
anatox91
Дата 12.5.2008, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



да и в stderr ниче не пишет...


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Любитель
Дата 12.5.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(anatox91 @  12.5.2008,  17:58 Найти цитируемый пост)
поставил ее в папку C:\MinGW\bin, так теперь когда открываю диалог то он просто торчит и сигнала финиша не дает

Не - надёжней на папку с файлом.

Странно, что ничего не пишет... Мои предположения закончились smile


--------------------
PM MAIL ICQ Skype   Вверх
anatox91
Дата 12.5.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: нет
Всего: 13



все-таки почему-то если ставлю любую раб. папку то диалоговое окно просто торчит...
я вот правда не знаю правильно ли я запускаю процесс?
в итоге должна вроде получаться такого вида команда:
g++ -c "filename"

кстати (на всякий случай):
Код

Compilation::Compilation(QString &filename, //тут я передаю полное имя файла


блин, я уже и не знаю в чем еще может быть ошибка... а MinGW точно выводит текстовые данные в stdout?


Это сообщение отредактировал(а) anatox91 - 12.5.2008, 20:25


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
SABROG
Дата 12.5.2008, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(anatox91 @  12.5.2008,  19:06 Найти цитируемый пост)
а MinGW точно выводит текстовые данные в stdout?


Ну например, если дать такую комманду:

Код

g++ --help


То вывод будет в stdout. А если такую:

Код

g++


То в stderr. Проверить можно так:

Код

g++ >c:\thisEmptyFile.txt


Код

g++ 2>c:\RedirectedStdErrToFile.txt


Предполагаю, что возможно g++ запускается, но файлика он не находит о чем ругается в stderr и закрывается.

Это сообщение отредактировал(а) SABROG - 12.5.2008, 21:43


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 13.5.2008, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 16
Всего: 92



Цитата(SABROG @  12.5.2008,  21:42 Найти цитируемый пост)
Предполагаю, что возможно g++ запускается, но файлика он не находит о чем ругается в stderr и закрывается.

Цитата(anatox91 @  12.5.2008,  18:18 Найти цитируемый пост)
да и в stderr ниче не пишет... 




--------------------
PM MAIL ICQ Skype   Вверх
SABROG
Дата 13.5.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(Любитель @ 13.5.2008,  12:19)
Цитата(SABROG @  12.5.2008,  21:42 Найти цитируемый пост)
Предполагаю, что возможно g++ запускается, но файлика он не находит о чем ругается в stderr и закрывается.

Цитата(anatox91 @  12.5.2008,  18:18 Найти цитируемый пост)
да и в stderr ниче не пишет... 

Под конец дня внимательность ухудшается. Удали тогда последние 3 поста.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0619 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.