1 (19.05.2011 23:27:52 отредактировано mycetophylax)

Нужна ваша помощь для этой проги ))
Надо написать на Qt под линукс, кто сможет ? )

/*
   ssaver.cpp - simpliest screensaver. 
   Especially for "MyComputer" readers :-)
   -------------------------------------
   Programmed by Ivan Gavrilyuk on Aug, 2002
   mailto: ivg@hotbox.ru
   best chat: [url]http://chat.chat.ru[/url], channel "Programmers" :-)
*/

#include <windows.h>
#include <scrnsave.h>
#include <math.h>

double pi = 3.1415926;
double pi2 = 2*pi;
double hpi = pi/2;

//screensaver message cycle. Works like WinMain in clean Win32API application
LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
   static PAINTSTRUCT ps = {NULL};
   static HDC hDC = NULL;
   static HPEN hPen1;
   static UINT uTimer = 0;
   static int x_max, y_max;
   static double step = 0.01, angle = 0;
   static int center_x, center_y;

   switch(message)
   {
   case WM_CREATE:
      x_max = GetSystemMetrics(SM_CXSCREEN);
      y_max = GetSystemMetrics(SM_CYSCREEN);
      center_x = x_max / 2;
      center_y = y_max / 2;
      uTimer = SetTimer(hWnd, 1, 10, NULL);
      hPen1 = (HPEN)GetStockObject(WHITE_PEN);
      break;

    case WM_DESTROY:
      if(uTimer) KillTimer(hWnd, uTimer);
      PostQuitMessage(0);
      break;

   case WM_TIMER:
      angle += step;
      if(angle > pi2) angle = 0;

      RECT lpr;
      lpr.left = center_x - 102;
      lpr.top = center_y - 102;
      lpr.right = center_x + 102;
      lpr.bottom = center_y + 102;;
      InvalidateRect(hWnd, &lpr, true);
      break;

   case WM_PAINT:
      x_max = GetSystemMetrics(SM_CXSCREEN);
      y_max = GetSystemMetrics(SM_CYSCREEN);
      center_x = x_max / 2;
      center_y = y_max / 2;
      
      hDC = BeginPaint(hWnd, &ps);
      
      if(fChildPreview)
      {
         SetBkColor(hDC, RGB(0, 0, 0));
         SetTextColor(hDC, RGB(255, 255, 0));
         char szPreview[] = "Мои квадратики :-)";
         TextOut(hDC, 15, 45, szPreview, strlen(szPreview));
      }
      else
      {
         SetBkColor(hDC, RGB(1, 0, 0));
         SetTextColor(hDC, RGB(120, 120, 120));

         SelectObject(hDC, hPen1);
         MoveToEx(hDC, center_x + (int)(cos(angle)*(double)100), center_y + (int)(sin(angle)*(double)(-100)), NULL);
         LineTo(hDC, center_x + (int)(cos(hpi + angle)*(double)100), center_y + (int)(sin(hpi + angle)*(double)(-100)));
         LineTo(hDC, center_x + (int)(cos(pi + angle)*(double)100), center_y + (int)(sin(pi + angle)*(double)(-100)));
         LineTo(hDC, center_x + (int)(cos(hpi + pi + angle)*(double)100), center_y + (int)(sin(hpi + pi + angle)*(double)(-100)));
         LineTo(hDC, center_x + (int)(cos(angle)*(double)100), center_y + (int)(sin(angle)*(double)(-100)));

         MoveToEx(hDC, center_x + (int)(cos(-angle)*(double)50), center_y + (int)(sin(-angle)*(double)(-50)), NULL);
         LineTo(hDC, center_x + (int)(cos(hpi - angle)*(double)50), center_y + (int)(sin(hpi - angle)*(double)(-50)));
         LineTo(hDC, center_x + (int)(cos(pi - angle)*(double)50), center_y + (int)(sin(pi - angle)*(double)(-50)));
         LineTo(hDC, center_x + (int)(cos(hpi + pi - angle)*(double)50), center_y + (int)(sin(hpi + pi - angle)*(double)(-50)));
         LineTo(hDC, center_x + (int)(cos(-angle)*(double)50), center_y + (int)(sin(-angle)*(double)(-50)));

         static char szAuthor[] = "Programmed by Evgeniy";
         TextOut(hDC, 0, y_max - 20, szAuthor, strlen(szAuthor));
      }
      
      EndPaint(hWnd, &ps);
      break;

    default: 
      return DefScreenSaverProc(hWnd, message, wParam, lParam);
   }

   return 0;
}

BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
   return true;
}

BOOL WINAPI RegisterDialogClasses (HANDLE hInst)
{
   return true;
}

//That's all, folks!

2 (19.05.2011 22:27:52 отредактировано voral)

Круто.... А не надо regedit что линуксовый реестр править ? ab))

Что вам конкретно нужно?
Написать скринсейвер, который каието квадратики гоняет?

Или просто программу гоняющую квадратики под Linuxом?


По скринсейвер не подскажу. (вроде в KDevelop был шаблон создания скринсейвера на c++)
А по графике QGraphicsScene, QGraphicsItem - пригодяться...

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

3

Буду благодарен и за помощь  в программе гоняющую просто квадратики ))) (  можно треугольники, линии и т.п. )
Думаю ваша помощь мне сильно поможет )))

4

У вас Qt как установлен? И установлен ли?
Как компилируете?

QLaber это вы имеет ввиду QLabel

И еще над полем ввода соощения есть иконка в виде "окошечко со стрелоч5ами влево-вправо" с подсказкой "code" . код программы засовывается внутрь этих тегов для выделение из массы

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

5

Eyxeniy пишет:

Буду благодарен и за помощь  в программе гоняющую просто квадратики ))) (  можно треугольники, линии и т.п. )
Думаю ваша помощь мне сильно поможет )))

Писать некогда. В асситенте все расписано. Для вашей задчи вообще нет ни чего сложного.
Примерный алгоритм.

1 Пишете свой класс наследник от  QGtraphicsScene
2 в конструкторе вызываете его метод addRect(...) этоит метод возвращает ссылку на объект класса QGraphicsItem (ваш один отдельный квадрат)
3. Сохраняете полученную ссылку где то в списке - свойстве вашего класса
4 повторяете 2 - 3 пункт по количеству квадратов.
5. Ну а дальше запускате цикл до события выхода из программы в котором обходится список вашик квадратиков и для каждого вызывается метод класса QGraphicsItem  translate(x, y) ..... x и y смещение относительно предыдущего места расчитанное по елаемому алгоритму....

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

6

А разве под линуксом, в консоле нельзя откомпилировать ? )))) извените если тупой вопрос )))

Компилирую :  1.с  -о 1.elf
Правильно же ?

У  меня не операционка, а WM ( оболочка )

7

Дааа ))))
Мне чуть-чуть стало легче )))

В асситенте все расписано. А это где ?

8

Eyxeniy пишет:

В асситенте все расписано. А это где ?

Программа такая, часть qt sdk.

95% процентов проблем находятся между клавиатурой и стулом.

9

Под линуксом, в консоле нельзя откомпилировать ? )))) извените если тупой вопрос )))

10 (19.05.2011 23:24:04 отредактировано Fat-Zer)

Eyxeniy пишет:

Под линуксом, в консоле нельзя откомпилировать ? )))) извените если тупой вопрос )))

можно, напишите команду, которую вводили и вывод.

ЗЫ: знаете, в трёх тредах на двух форумах сложно одновременно общаться...

95% процентов проблем находятся между клавиатурой и стулом.

11

#include <QtGui>
int main (int argc, char** argv)
{
    QApplication app (argc, argv);
    QLaber lbl (" Hello ");
    lbl.show();
    return app.exec();
}

Выдает ошибки : что нет каталога и директивы <QtGui>
Что делать ? Поподробнее плиз ...

Компилирую :  1.с  -о 1.elf
Правильно же ?
У  меня не операционка, а WM ( оболочка )

12

Eyxeniy пишет:

Компилирую :  1.с  -о 1.elf
Правильно же ?

/facepalm
1) по меньшей мере команда выглядит как "gcc 1.с -о 1.elf", копируйте команды и их вывод полностью
2) суффикс ".elf" писать не принято
3) не хватает инклюдов. для самой простой гуёвой программы обычно нужны "-I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4"
4) не хватает динамических библиотек: -L/usr/lib/qt4 -lQtCore -lQtGui

95% процентов проблем находятся между клавиатурой и стулом.

13

Eyxeniy пишет:

Компилирую :  1.с  -о 1.elf
Правильно же ?

/facepalm
1) по меньшей мере команда выглядит как "gcc 1.с -о 1.elf", копируйте команды и их вывод полностью
2) суффикс ".elf" писать не принято
3) не хватает инклюдов. для самой простой гуёвой программы обычно нужны "-I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4"
4) не хватает динамических библиотек: -L/usr/lib/qt4 -lQtCore -lQtGui

95% процентов проблем находятся между клавиатурой и стулом.

14

и как вставить 3) и 4) пункт ?

15

ы?

 Консоль:

qmake -project
qmake
make

ыы?
Qt Creator не пойдёт?

16

Не а )))
Нужен чистый код )))

17

Eyxeniy пишет:

и как вставить 3) и 4) пункт ?

командную строку в первый раз видите?

"gcc -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -L/usr/lib/qt4 -lQtCore -lQtGui 1.с -о 1.elf

ЗЫ: для приложений большего размера потребуется и другие вещи... советую почитать про qmake и .pro файлы.

95% процентов проблем находятся между клавиатурой и стулом.

18

http://cartan.cas.suffolk.edu/oopdocboo … index.html -
и, простите, накой сдались кодеры, которые азов искать не умеют, где их почитать?!

Там - всё разжёвано, сцылко - с аглицкой вики. Не варез, всё официально - и вполне рабочая инфа.

Простите, но в подобных случаях нужен не хелпер, а кинолог-инструктор -
ну, чтобы научил, как искать.

Давно уже не забавно наблюдать торжество отрицательного отбора.

19

командную строку в первый раз видите?
Линукс не знаю.
А лень - двигатель прогресса )))

20

и, простите, накой сдались кодеры, которые азов искать не умеют, где их почитать?!

и где здесь графика  ?????

21 (20.05.2011 01:36:29 отредактировано Chars67)

Eyxeniy пишет:

и где здесь графика  ?????

# шамкает по-старушачьи

Понимашь, касатик, читать много надо, учиться много надо.

По тексту - будет и про графику, когда время придёт.
Текст-то по сцылко - по кутям, однако. Не, ну вдруг сразу оно не заметно. Так обратите своё драгоценное внимание.

А решать дурацкие проблемы - даже за деньгу не собираюсь. Нету у вас таких денег.

Вот извините за переход на личности, но возникает вопрос:
Эдакий лучезарный джедай обращается за "помощью" -
дык и чО???

Я таких умею посылать раз и навсегда, а вот мой сын - не умеет пока. Тилихент паршивый!
Так он должен будет вас обрабатывать, если судьба вас сведёт в одном проекте?

Нахрен-нахрен!!!

Давно уже не забавно наблюдать торжество отрицательного отбора.

22 (20.05.2011 01:45:33 отредактировано RasenHerz)

Как-то так надо:
g++ `pkg-config --libs QtGui` `pkg-config --cflags QtGui` main.cpp

В итоге выполнится что-то вроде:
g++ -lQtGui -lQtCore -DQT_SHARED -I/usr/include/QtGui -I/usr/include/QtCore main.cpp

23

Ремарка для полных цензура-чков:
обрабатывать == работать за кого-то.

Давно уже не забавно наблюдать торжество отрицательного отбора.

24

Eyxeniy пишет:

Не а )))
Нужен чистый код )))

чистый от чего?  oO
И как чистота кода зависит от редактора?

Единственное отличие, для вашей ситуации, между vim (или в чем там редактируете) и QtCreator в последнем должны быть же прописаны команы сборки и компиляции. Кстати, там вы их можете подсмотреть, что бы потом с умным видом запустить то же самое из консоли ab

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

25

Eyxeniy пишет:

У  меня не операционка, а WM ( оболочка )

Как все запущенно.....

Какая оболочка?
WM - это что? (У меня, что то не стыкуется это сокращение с предметом разговора и с данной фразой)

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

26

Eyxeniy пишет:

и, простите, накой сдались кодеры, которые азов искать не умеют, где их почитать?!

и где здесь графика  ?????

Уф....
Вы на кого учитесь если не секрет?

Поставьте себе QtSDK - можно из репозиториев дистрибутива, можно с сайта qt.nokia.com

Откройте qtCreator и попробуйте сделать в нем. Там вам будут и подсказки по методам и подсветка и т.п.
Открываете в нем же "справку" (серая колонка слева пиктограмма со знаком вопроса) или нажимаете F1. Это и есть (по содержанию асистент). Если хочется без креатора запускаете assitant (прямо такая команда). И открывается прямо та справка в которой все есть

в конце концов вбиваете в гугле, например, QtGraphicsScene и первые две ссылки наверняка на ту же доку онлайн, причем возможно даже на русском на сайтах
http://doc.qt.nokia.com/
http://doc.crossplatform.ru/

Если же вам все таки хочется получить решение не напрягаясь велкам на любой сайт фрилансеров.

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

27 (20.05.2011 10:21:47 отредактировано voral)

Eyxeniy пишет:

А лень - двигатель прогресса )))

вы совершенно не правильно трактуете эту фразу.
Она означает, что вам надо сначала, что то сделать, что потом позволит вам облегчить жить. Сейчас вам надо разобраться с предметной областью.

То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me".
GNU/Linux Debian

28

Под чистым я подразумеваю : чтобы только был Qt и c++, и больше не чего )))

Если брать примеры из QtCreator, то при компиляции в консоли выводятся ошибки (((

29

Eyxeniy, на фрилансе напишут. За деньги естественно. Ещё и разжуют, если попросите
Chars67 Вам правильно ссылочку дал. Без основ никуда

30

ну извините ))))
Когда просят, делаю, правда примитивный код.
А тут столкнулся с линуксом и не кто помочь не хочет.
Все кругом умные, а 10 мин. на исправления моего кода нет:

/*
    ssaver.cpp - simpliest screensaver. 
    Especially for "MyComputer" readers :-)
    -------------------------------------
    Programmed by Ivan Gavrilyuk on Aug, 2002
    mailto: ivg@hotbox.ru
    best chat: http://chat.chat.ru, channel "Programmers" :-)
*/

#include <windows.h>
#include <scrnsave.h>
#include <math.h>

double pi = 3.1415926;
double pi2 = 2*pi;
double hpi = pi/2;

//screensaver message cycle. Works like WinMain in clean Win32API application
LRESULT WINAPI ScreenSaverProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static PAINTSTRUCT ps = {NULL};
    static HDC hDC = NULL;
    static HPEN hPen1;
    static UINT uTimer = 0;
    static int x_max, y_max;
    static double step = 0.01, angle = 0;
    static int center_x, center_y;

    switch(message)
    {
    case WM_CREATE:
        x_max = GetSystemMetrics(SM_CXSCREEN);
        y_max = GetSystemMetrics(SM_CYSCREEN);
        center_x = x_max / 2;
        center_y = y_max / 2;
        uTimer = SetTimer(hWnd, 1, 10, NULL);
        hPen1 = (HPEN)GetStockObject(WHITE_PEN);
        break;

    case WM_DESTROY:
        if(uTimer) KillTimer(hWnd, uTimer);
        PostQuitMessage(0);
        break;

    case WM_TIMER:
        angle += step;
        if(angle > pi2) angle = 0;

        RECT lpr;
        lpr.left = center_x - 102;
        lpr.top = center_y - 102;
        lpr.right = center_x + 102;
        lpr.bottom = center_y + 102;;
        InvalidateRect(hWnd, &lpr, true);
        break;

    case WM_PAINT:
        x_max = GetSystemMetrics(SM_CXSCREEN);
        y_max = GetSystemMetrics(SM_CYSCREEN);
        center_x = x_max / 2;
        center_y = y_max / 2;
        
        hDC = BeginPaint(hWnd, &ps);
        
        if(fChildPreview)
        {
            SetBkColor(hDC, RGB(0, 0, 0));
            SetTextColor(hDC, RGB(255, 255, 0));
            char szPreview[] = "Мои квадратики :-)";
            TextOut(hDC, 15, 45, szPreview, strlen(szPreview));
        }
        else
        {
            SetBkColor(hDC, RGB(1, 0, 0));
            SetTextColor(hDC, RGB(120, 120, 120));

            SelectObject(hDC, hPen1);
            MoveToEx(hDC, center_x + (int)(cos(angle)*(double)100), center_y + (int)(sin(angle)*(double)(-100)), NULL);
            LineTo(hDC, center_x + (int)(cos(hpi + angle)*(double)100), center_y + (int)(sin(hpi + angle)*(double)(-100)));
            LineTo(hDC, center_x + (int)(cos(pi + angle)*(double)100), center_y + (int)(sin(pi + angle)*(double)(-100)));
            LineTo(hDC, center_x + (int)(cos(hpi + pi + angle)*(double)100), center_y + (int)(sin(hpi + pi + angle)*(double)(-100)));
            LineTo(hDC, center_x + (int)(cos(angle)*(double)100), center_y + (int)(sin(angle)*(double)(-100)));

            MoveToEx(hDC, center_x + (int)(cos(-angle)*(double)50), center_y + (int)(sin(-angle)*(double)(-50)), NULL);
            LineTo(hDC, center_x + (int)(cos(hpi - angle)*(double)50), center_y + (int)(sin(hpi - angle)*(double)(-50)));
            LineTo(hDC, center_x + (int)(cos(pi - angle)*(double)50), center_y + (int)(sin(pi - angle)*(double)(-50)));
            LineTo(hDC, center_x + (int)(cos(hpi + pi - angle)*(double)50), center_y + (int)(sin(hpi + pi - angle)*(double)(-50)));
            LineTo(hDC, center_x + (int)(cos(-angle)*(double)50), center_y + (int)(sin(-angle)*(double)(-50)));

            static char szAuthor[] = "Programmed by Evgeniy";
            TextOut(hDC, 0, y_max - 20, szAuthor, strlen(szAuthor));
        }
        
        EndPaint(hWnd, &ps);
        break;

    default: 
        return DefScreenSaverProc(hWnd, message, wParam, lParam);
    }

    return 0;
}

BOOL WINAPI ScreenSaverConfigureDialog (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    return true;
}

BOOL WINAPI RegisterDialogClasses (HANDLE hInst)
{
    return true;
}

//That's all, folks!