[+] QT i C++ w Linux Par

Potrzebujesz pomocy z C, C++, perl, python, itp.
FunLnx
Posty: 61
Rejestracja: 16 lutego 2014, 10:59

Post autor: FunLnx »

Poszło, zainstalowałem make i przeinstalowałem g++. Dziękuje za całą dotychczasową pomoc.

Teraz mam do was kompletnie podstawowe pytania.

Jak żyć jak chce pisać program na windows w systemie linux, czy się da? A raczej chciałbym tak bo prędkość kompilacji jest chyba z 3x szybsza.

Czy da się napisać, aplikacje okienkową, która będzie działała pod Windowsem jak i linux ? Jak w tym wypadku funkcjonują standardowe biblioteki QT jak <QMainWindow>, <QPushButton> itd. Czy niestety trzeba pisać osobno w windows, a osobno w linux.

Jak po prostu uruchomić mój program w systemi linux ? W folderze projektu

Kod: Zaznacz cały

/home/rafal/Pulpit/uild-nienazwany-Desktop_Qt_5_2_1_GCC_32bit-Debug
mam plik wykonywalny, klikam na niego uruchamiam lecz dostaje tylko czarny ekran. To samo dzieje się dla debug i release

Dlaczego nie ma biblioteki <conio.h> która ma funkcje getch(). Co doinstalować ?
Awatar użytkownika
pone13
Beginner
Posty: 337
Rejestracja: 30 listopada 2007, 20:59
Lokalizacja: Leszno

Post autor: pone13 »

Jeżeli chodzi o pisanie programów okienkowych w Qt, to możesz je pisać zarówno pod Windowsem jaki i w Linuksie.

Jeżeli chodzi o ich kompilacje i uruchomienie kodu na różnych platformach to będziesz musiał użyć tzw. kompilacji skrośnej.
W przypadku Qt będziesz musiał posiadać wersję biblioteki Qt skompilowaną dla każdej z docelowych platform.
W przypadku kompilacji programu Qt dla Windows na Linuksie będziesz musiał mieć kompilator skrośny dla platformy Windows (MinGW?),
oraz skompilowaną bibliotekę Qt tymże kompilatorem. Bibliotekę Qt niestety ale będziesz musiał skompilować sam.

Prostszym rozwiązaniem tej kwestii jest instalacja windows w maszynie wirtualnej i kompilacja kodu źródłowego bezpośrednio pod Windowsem.
Dlaczego nie ma biblioteki <conio.h> która ma funkcje getch(). Co doinstalować ?
conio.h nie jest częścią biblioteki standardowej, ani też nie należy do standardu POSIX.
Podobną funkcjonalność w Linuksie dostarcza biblioteka ncurses, jest tam chyba też funkcja getch.

Co do uruchomienia programu to niestety przydał by się kod źródłowy do wglądu.
FunLnx
Posty: 61
Rejestracja: 16 lutego 2014, 10:59

Post autor: FunLnx »

No to trochę dużo potrzebuje. Jeśli sobie nie poradzę w sposób, który piszesz to zrobię to w mniej inteligenty sposób, po prostu skopiuje działający kod pod linuxem, do notatnika, uruchomię QT na win i wkleję. Z tego co widzę definicje funkcji nie różnią.
Co do uruchomienia programu to niestety przydał by się kod źródłowy do wglądu.
Co tu podawać :D

Kod: Zaznacz cały

#Include <iostream>[/color]
[color=#333333]int main()[/color]
[color=#333333]{
[/color]int a;
[color=#333333]cout << "Helo !" << endl;
[/color]cout <<"Wprowadz liczbe" << endl;
cin >> a;
return 0;
[color=#333333]}[/color]
Program uruchamia się w załączonym przeze mnie terminalu tak, że przeciągam ikonkę upuszczam na terminal mam ścieżkę i enter, ale nie chce się nic uruchomić klikając na niego.
Awatar użytkownika
pone13
Beginner
Posty: 337
Rejestracja: 30 listopada 2007, 20:59
Lokalizacja: Leszno

Post autor: pone13 »

Żeby się uruchomił sam terminal 'po kliknięciu' musiałbyś stworzyć odpowiedni 'desktop entry' - plik z rozszerzeniem .desktop i ustawić w nim opcję uruchamiania w terminalu (Terminal=true), więcej info: https://wiki.archlinux.org/index.php/Desktop_Entries.
Dopiero za pomocą takiego 'skrótu' uruchamiasz program, który wymaga terminala.

Ale na co ci to na tym etapie? Trudno jest otworzyć terminal wejść w katalog projektu i odpalić program?
FunLnx
Posty: 61
Rejestracja: 16 lutego 2014, 10:59

Post autor: FunLnx »

Nie nie trudno, ale nauczony jestem z win, że kilka się w exe i działa. Z tego co widzę, aplikacje okienkowa (prosta klasa QMainWindow) tak działa klik i mam okno. Rozumiem podany przez Ciebie sposób, tworzyłem tak kosz i mój komputer. Czyli na chwilę obecną wszystko jasne.

Dziękuję bardzo za pomoc.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Większość środowisk programistycznych umożliwia uruchomienie zbudowanego programu przyciskiem w menu, bądź skrótem klawiszowym.
FunLnx
Posty: 61
Rejestracja: 16 lutego 2014, 10:59

Post autor: FunLnx »

I tak jest w QT. Tylko mi chodziło o uruchamianie tego programiku po wyłączeniu QT. Myślałem, że jak wejdę w katalog z debug, albo release i nadusze na program to się uruchomi tak od ręki jak w win.
Awatar użytkownika
Rafal_F
Moderator
Posty: 2350
Rejestracja: 29 sierpnia 2008, 16:45

Post autor: Rafal_F »

Programy uruchomiają się jak się na nie kliknie (tak to przynajmniej wygląda w większości menedżerów plików), problem w tym że w przypadku programów konsolowych wszystkie wyniki zostają wyświetlone w konsoli tty na której uruchomione jest środowisko graficzne. Terminale można zmieniać wciskając alt+ctrl+Fx (za x podstaw cyfry).
W sumie jest to logiczne, bo przecież w swoim programie nigdzie nie tworzysz żadnego okna. Z programami graficznymi nie ma tego problemu, bo jak sama nazwa wskazuje tworzą interfejs graficzny.
FunLnx
Posty: 61
Rejestracja: 16 lutego 2014, 10:59

Post autor: FunLnx »

Rozumiem już problem, myślę, że póki co w tej materii nie mam więcej pytań. Jeszcze raz dziękuję za pomoc
klavierkrk
Beginner
Posty: 257
Rejestracja: 14 maja 2013, 17:18

Post autor: klavierkrk »

FunLnx pisze: Dlaczego nie ma biblioteki <conio.h> która ma funkcje getch(). Co doinstalować ?
polecam gconio: http://www.wence.vandermeersch.org/gconio/
http://www.wence.vandermeersch.org/gconio/gconio.h
ODPOWIEDZ