Russian Qt Forum

Qt => Вопросы новичков => Тема начата: CJ1 от Июнь 21, 2012, 12:23



Название: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 12:23
Нимогу понять почему не работает
Пишу так
Код:
    QSettings seting("ServerBD","Net");
    m_process = new QProcess(this);
    connect(m_process, SIGNAL(readyReadStandardOutput()), SLOT(processout()));
    m_process->start("cmd /C  mysql -u"+seting.value("LoginMySql","root").toString()+" -P"+seting.value("PortMySQL","3306").toString()+" -h"+seting.value("hostMySql").toString()+" -p"+seting.value("PassMySql").toString());
    QString s = "CREATE DATABASE IF NOT EXISTS torgbd1 \\g \r\n \\q \r\n";
    m_process->write(s.toAscii());


    m_process->close();
    delete m_process;

Не работает если пишешь
   m_process->close();
    delete m_process;

если убрать то работает


Название: Re: QProces::close
Отправлено: mutineer от Июнь 21, 2012, 12:35
что именно "не работает"?


Название: Re: QProces::close
Отправлено: Igors от Июнь 21, 2012, 12:53
А с чего Вы взяли что на момент close() процесс уже сделал все что Вам нужно? Он ведь выполняется асинхронно (параллельно Вашему коду) и мог даже не начаться - а Вы уже close(). Дождитесь напр сигнала finished

Два общих замечания

- не спешите бомбить форум вопросами, сначала загляните в Assistant
- это форум (а не класс русского языка), но все же просьба с грамматикой повнимательнее


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 14:15
Ладно....... Не буду больше так писать.... Это привычка такая, я уже не один форум заморил так, взять даже http://forum.sources.ru )))))


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 15:35
Вот опять новая проблема!
Код:
bool MainWindow::event(QEvent * m)
{

    if (m->type() == m->WindowStateChange){
        if(this->isMinimized())
            setHidden(true);
              minimized = true;
    }
    return true;
}

Хочу чтоб при сворачивании окно исчезало, за место этого оно становится белым внутри и стоит!


Название: Re: QProces::close
Отправлено: Serr500 от Июнь 21, 2012, 15:42
return ParentType::event(m);


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 15:45
Код:
bool MainWindow::event(QEvent * m)
{

    if (m->type() == m->WindowStateChange){
        if(this->isMinimized())
            setHidden(true);
    }
    return MainWindow::event(m);
}
Сходу вылазиет "Прекращения работы программы", на Win 7


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 15:54
Что это за такая херь можете объяснить?


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 15:57
Сделал так
Код:
bool MainWindow::event(QEvent * event)
{

    if (event->type() == event->WindowStateChange){
        if(this->isMinimized())
            setHidden(true);
    }
    return QMainWindow::event(event);
}

Ошибку не дает но экран по прежнему становится белым


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 16:21
Помогите ктонибудь


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 16:38
Вот так работает!
Код:
bool MainWindow::event(QEvent * event)
{
    if (event->type() == event->WindowStateChange){
        if(this->isMinimized())
            QTimer::singleShot(0, this, SLOT(hide()));
    }
    return QMainWindow::event(event);
}

Так и непонятно в чем же косяк!


Название: Re: QProces::close
Отправлено: Igors от Июнь 21, 2012, 16:41
Помогите ктонибудь

Цитировать
Это я, Пятачок, спасите, помогите!
:) Чего паникуем? Спокойно вставляем отладочную печать (напр перед setHidden) и смотрим. А потом уже прикидываем стоит ли беспокоить людей


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 16:53
Да ладно, пусть уже так работает.
Теперь нашел это на разных форумах, все делают через таймер


Название: Re: QProces::close
Отправлено: GreatSnake от Июнь 21, 2012, 17:14
Так и непонятно в чем же косяк!
А косяк в том, что нельзя в обработчике событий порождать новое событие.


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 17:20
хм...... понятно... А как тогда должен реализовываться этот?


Название: Re: QProces::close
Отправлено: GreatSnake от Июнь 21, 2012, 17:28
хм...... понятно... А как тогда должна реализовываться это?
Ты же здесь выше уже обещал писать по-русски.

Так и "должна", т.к. QTimer::singleShot(0) события не порождает, а всего-навсего выполняет слот на следующем цикле обработки событий.


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 21, 2012, 21:25
Слушайте, а почему в ресурсах (.qrc) не сохраняются иконки.?

Я переношу прогу на другой комп, и кнопки в которых должны быть иконки пустые


Название: Re: QProces::close
Отправлено: Alex Custov от Июнь 21, 2012, 21:29
Потому что плагин qico4.dll тоже нужно переносить http://qt-project.org/doc/qt-4.8/deployment-windows.html


Название: Re: QProces::close
Отправлено: Serr500 от Июнь 21, 2012, 21:31
Потому что плагин qico4.dll тоже нужно переносить http://qt-project.org/doc/qt-4.8/deployment-windows.html
Опередил.  ;)


Название: Re: QProces::close
Отправлено: CJ1 от Июнь 22, 2012, 08:02
Спасибо!