Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить QWidget в модуль? 
:(
    Опции темы
23zaycev
  Дата 23.4.2018, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.4.2018

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



Здравствуйте. При разборе очередного модуля нужно добавить UI-интерфейс для добавления нужных элементов. Можете что посоветовать? Спасибо.

main.cpp
Код

#include "VeyonCore.h"

#include <QCoreApplication>
#include <QAbstractNativeEventFilter>
#include <QWidget>
#include <QMainWindow>

#include "WindowsService.h"
#include "ComputerControlServer.h"
#include "VeyonConfiguration.h"


#ifdef VEYON_BUILD_WIN32
static HANDLE hShutdownEvent = NULL;

// event filter which makes ICA recognize logoff events etc.
class LogoffEventFilter : public QAbstractNativeEventFilter
{
public:
    virtual bool nativeEventFilter( const QByteArray& eventType, void *message, long *result)
    {
        Q_UNUSED(eventType);
        Q_UNUSED(result);

        DWORD winMsg = ( ( MSG *) message )->message;

        if( winMsg == WM_QUERYENDSESSION )
        {
            qInfo( "Got WM_QUERYENDSESSION - initiating server shutdown" );

            // tell UltraVNC server to quit
            SetEvent( hShutdownEvent );
        }

        return false;
    }

};

#endif


int main( int argc, char **argv )
{

    // decide in what mode to run
    if( argc >= 2 )
    {
#ifdef VEYON_BUILD_WIN32
        for( int i = 1; i < argc; ++i )
        {
            if( QString( argv[i] ).toLower().contains( "service" ) )
            {
                WindowsService winService( "VeyonService", "-service", "Veyon Service",
                                            QString(), argc, argv );
                if( winService.evalArgs( argc, argv ) )
                {
                    return 0;
                }
                break;
            }
        }
#endif
    }

    QCoreApplication app( argc, argv );

    VeyonCore core( &app, QStringLiteral("Service") );

    // parse arguments
    QStringListIterator argIt( app.arguments() );
    argIt.next();

    while( argc > 1 && argIt.hasNext() )
    {
        const QString a = argIt.next().toLower();

        if( a == QStringLiteral("-session") && argIt.hasNext() )
        {
            int sessionId = argIt.next().toUInt();
            if( sessionId > 0 )
            {
                core.config().setPrimaryServicePort( core.config().primaryServicePort() + sessionId );
                core.config().setVncServerPort( core.config().vncServerPort() + sessionId );
                core.config().setFeatureWorkerManagerPort( core.config().featureWorkerManagerPort() + sessionId );
            }
        }
    }

#ifdef VEYON_BUILD_WIN32
    hShutdownEvent = OpenEvent( EVENT_ALL_ACCESS, false, L"Global\\SessionEventUltra" );
    if( !hShutdownEvent )
    {
        // no global event available already as we're not running under the
        // control of the veyon service supervisor?
        if( GetLastError() == ERROR_FILE_NOT_FOUND )
        {
            qWarning( "Creating session event" );
            // then create our own event as otherwise the VNC server main loop
            // will eat 100% CPU due to failing WaitForSingleObject() calls
            hShutdownEvent = CreateEvent( NULL, false, false, L"Global\\SessionEventUltra" );
        }
        else
        {
            qWarning( "Could not open or create session event" );
        }
    }

    LogoffEventFilter eventFilter;

    app.installNativeEventFilter( &eventFilter );
#endif

    auto server = new ComputerControlServer;
    server->start();

    qInfo( "Exec" );

    int ret = app.exec();

    delete server;

    qInfo( "Exec Done" );

#ifdef VEYON_BUILD_WIN32
    CloseHandle( hShutdownEvent );
#endif

    return ret;
}


P.S.: исходный проект называется Veyon rev.4.0.4, модуль service. Собирался проект в Qt через CMakeLists.txt. Добавлять файл в проект(к примеру, UI) отказывается(ПКМ->"Добавить новый...").
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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