Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Невидимое окно
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
bigory
Всем доброе время суток!
Подскажите как создать невидимое окно?
Алексей1153
bigory, невидимость бывает разная. Какая у тебя задача ?
vadim303
Цитата(bigory @ 2.11.2010, 0:37) *
Всем доброе время суток!
Подскажите как создать невидимое окно?

QWidget::hide()
QWidget::setVisible(false)
bigory
Цитата(bigory @ 1.11.2010, 23:37) *
bigory, невидимость бывает разная. Какая у тебя задача ?


Хочу сделать что-то похожее на
#include "myprocess.h"
QProcess myProc;
myProcess::myProcess(QWidget *parent) : QDialog(parent)
{
        sb.setText("start");
        ib.setText("input");
        QVBoxLayout *vl=new QVBoxLayout;
        vl->addWidget(&sb);
        vl->addWidget(&te);
        vl->addWidget(&le);
        vl->addWidget(&ib);
        setLayout(vl);

        connect(&sb,SIGNAL(clicked()),this,SLOT(startProcess()));
        connect(&ib,SIGNAL(clicked()),this,SLOT(doInput()));
        connect(&myProc,SIGNAL(readyReadStandardOutput()),this,SLOT(showOutput()));
        connect(&myProc,SIGNAL(readyReadStandardError()),this,SLOT(showOutput()));
}

void myProcess::startProcess()
{
        QString prog="C:\\WINDOWS\\system32\\cmd.exe";
     //   QString prog="C:\\Qt\\2010.05\\qt\\Forum\\testcon-build-desktop\\release\\testcon.exe";
        myProc.start(prog);
        if(myProc.waitForStarted())
                te.append(QString("Program <b>%1</b> started").arg(prog));
        else
                te.append(QString("Can't start program <b>%1</b>").arg(prog));
}

void myProcess::doInput()
{
        QString s=le.text()+"\n";
        if(myProc.write(s.toAscii())!=-1) le.clear();
}

void myProcess::showOutput()
{
        te.append(QString::fromLocal8Bit(myProc.readAllStandardOutput()));
        te.append(QString::fromLocal8Bit(myProc.readAllStandardError()));


Но мне нужно сделать чтобы небыло формы и программа работала с командной строкой и получала от нее ответы
Алексей1153
создай консольный проект
bigory
Почему консольный???
Мне нужно сделать невидимую программу, которая будет взаимодействовать постоянно с сервером.
Консольная программа будет видна пользователю
Алексей1153
bigory,

Цитата(vadim303 @ 2.11.2010, 13:31) *
Хочу сделать что-то похожее на


откуда я могу знать, что делает этот код ? :) Там запускается консоль.

И вот, наконец-то ты человечьими словами говоришь задачу:
Цитата(bigory @ 2.11.2010, 22:26) *
Мне нужно сделать невидимую программу, которая будет взаимодействовать постоянно с сервером

1) совершенно неважно, видимо или невидимо окно (тут Вадим угадал-таки, смотри его пост, как скрыть)
2) совершенно неважно, есть ли окно вообще - серверу это безразлично

создаёшь сокет в main, безо всяких окон - и вперёд.

Litkevich Yuriy
Цитата(bigory @ 2.11.2010, 23:26) *
Консольная программа будет видна пользователю
консольная программа видна пользователю только если ты используешь в проекте
CONFIG += console
а если не используешь, то не видна.

программа которая работает в фоне называется - демон (Linux) / служба (Windows)
смотри решение QtService
bigory
Ну я еще только осваиваю Qt, поэтому мне не понятна запись:
QWidget::hide()
QWidget::setVisible(false)
Как это применить?
Алексей1153
bigory, это методы QWidget. Они не статические, поэтому можно вызвать только для объекта QWidget или производного класса от оного

QWidget w(указатель на родитель);
w.hide();

(это больше по C++ вопрос, чем по Qt)
bigory
А, все докопался. Я просто думал что его надо включать не в основном файле, то есть не в main.cpp, а оказывается что именно там. Теперь понятно. Спасибо! Извините что задаю вопросы, которые не относятся к Qt, Просто команды используют Qt библиотеки, поэтому я всегда думаю что мои вопросы имеют отношения к Qt
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.