LinuxForum.Fans
Тема

Qt(c++) под линукс ))))

Автор: Eyxeniy 40 сообщений 8523 просмотров
#163569

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

text

/*
   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!

#163601

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

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

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


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

#163603

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

#163605

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

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

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

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

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

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

#163614

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

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

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

#163622

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

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

#163623
Eyxeniy написал:
В асситенте все расписано. А это где ?

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

#163625

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

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

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

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

#163632
text

#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 ( оболочка )

#163633
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

#163634
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

#163635

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

#163637

ы?
[console]
qmake -project
qmake
make[/console]

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

#163640

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

#163641
Eyxeniy написал:
и как вставить 3) и 4) пункт ?

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

text
"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 файлы.

#163643

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

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

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

#163644

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

#163645


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

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

Войдите или зарегистрируйтесь, чтобы ответить.