#cpp #qt #programowanie

Programirki mam pewien problem dziwny bądź nie dziwny, to zależy od tego czy ktoś będzie wiedział o co dokładnie chodzi czy nie. Chcę sobie zrobić serwer na osobnym wątku w Qt razem z socketem do komunikacji po TCP/IP. Najpierw może pliki źródłowe które biorą w tym udział:

https://gist.github.com/Granathar/e1388680b43c9d66edd9#file-gistfile1-txt - server.h
https://gist.github.com/Granathar/a7a67ac59488b0b0e3a8#file-gistfile2-txt - server.cpp
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Khaine Wywal to:

while (serverThread->isRunning()){};
serverThread->~QThread();

I nigdy więcej takich głupot nie pisz.
Co do pętli while to od tego jest wait, ale wątpię  że go tu potrzebujesz, wystarczy że podpiołeś sobie delete_later i serverThread umrze sobie kiedy będzie chciał, a o tym najlepiej dowiesz się z sygnału.
  • Odpowiedz
A tak wogóle to

connect (serverThread, SIGNAL(destroyed()),serverpointer, SLOT(deleteLater()));

Jest kompletną głupotą, bo server
pointer będzie w wątku który już nie istnieje, więc deleteLater nie zadziała. Istnieje szansa że atrybut serverThread będzie wskazywał na usunięty już obiekt, więc zamist do deleteLater podepnij to slotu w którym przypiszesz do serverThread nulla. Ewentualnie zacznij kożystać z klasy QPointer, która robi to
  • Odpowiedz
Jak to jest że czasem odpalając na debugu programy #qt dostaję w konsoli komunikaty wysyłane przez jakiś szpiegowski syf #matlab sprawdzający mi w tle licencję? qDebug() jest wspólne dla wszystkich aplikacji?
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#programowanie #cpp #qt

Czy Qt posiada w sobie jakąś funkcję/klasę, która pozwala wybebeszać dźwięk systemowy? Nie chodzi mi tutaj o pobieranie audio z mikrofonu, bo to akurat widziałem, tylko prosto ze źródełka zanim wejdzie w kartę dźwiękową i zostanie przerobione na sygnały dla głośników.
  • 27
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Nicarim: No to BASS pewnie wygra ( ͡° ͜ʖ ͡°) To co mnie fascynuje w wysokopoziomowym programowaniu, że można zrobić coś co będzie miało ręce i nogi, i nie mieć absolutnie bladego pojęcia jak to działa. Tam skąd poniekąd pochodzę (C, Asembler) jest dokładnie odwrotnie ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@JoeBlade: Na razie na stacku się spytałem o tego wrapa, może istnieje coś takiego gdzieś. Nie da się raczej nagrać endpoint audio inaczej niż przez WASAPI.
  • Odpowiedz
#programowanie #linux #archlinux #cpp #qt próbuję zbudować swój program tak jak opisano tutaj: http://stackoverflow.com/questions/14170590/building-qt-5-on-linux-for-windows ale wynik jest następujący:

make[1]: x86_64-w64-mingw32.static-g++: Command not found
Makefile.Release:5529: recipe for target 'release/main.o' failed
make[1]: *** [release/main.o] Error 127
make[1]: Leaving directory '/home/sms/Documents/MyApp'
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Djuna Przez co kompilujesz z palca qmakiem czy QtCretorem? Pobaw się konfiguracją środowska w QtCreatorze, obsługuje on kompilator MinGW. Wszystkie ustawienia powinno wczytać podając mu plik qmake, ale wiem że kompilator się ustawia osobno. Jeżeli z palca to pewnie zapomniałeś:

export PATH=$PATH:/usr/bin/
  • Odpowiedz
#qt #cpp Ciekawe- odpaliłem program, zobaczyłem że działa i wrzuciłem na Githuba, po czym komp mi się zresetował przez wypadającą baterię. Po ponownym odpaleniu dodałem jednego #includa i spróbowałem znów odpalić. Dostałem błąd z d--y w miejscu którego nie edytowałem od tygodnia. Wywaliłem includa i program dalej się nie kompiluje. Nie pomogło też resetowanie IDE, kompa, ani opcja 'Wyczyść projekt'.
Kod, na którym się wywala to:

QRect
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak w #qt zapamiętać pozycję okienka QDialog "przyklejonego" do bocznej krawędzi ekranu? Mam teraz saveGeometry(); w closeEvent() i działa ok dla normalnie przesuniętych okienek, ale nie dla tych "przyklejonych". #cpp
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Cześć,
jako że ostatni problem, którego rozwiązania nie mogłem nigdzie znaleźć (generowanie #qt GUI w .dll) bo jak się okazało qt creator nie może utworzyć (a przynajmniej ja nie wiem jak) .dll którą da się wszczepić do procesu, bo wysypuje milion błędów, zainstalowałem qt do visual studio 2013 i wszystko śmiga tylko jest jeden problem, robienie GUI bez qt creatora to męka. Znalazłem kilka sposobów żeby konwertowały plik .ui na
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@morsisko: QtCreator doskonale sobie radzi z robieniem dll... jeśli Ci nie działało, to po prostu coś robiłeś źle.

Aha, wspomnę tylko, że nie załadujesz dllki skompilowanej pod mingw do apki skompilowanej visualem i vice versa. Nie są kompatybilne.
  • Odpowiedz
@vipe: W takim razie co robiłem źle, skoro identyczny kod działa na visualu a w qt po zainjectowaniu do jakiegoś procesu nie wykrywał żadnego entry pointu?

A co do ładowania to jeśli chodzi ci ładowanie .dll do procesu to jesteś w błędzie, przed chwilą ładowałem ją do aplikacji napisanej w delphi i działało bez zarzutów.
  • Odpowiedz
Cześć,
mam takie małe pytanie: Jaki jest najlepszy sposób na dołączenie GUI do pliku .dll w #qt i #cpp ?
Program i tak będzie działał tylko na windowsie więc sposób może być "typowo" na windowsa. Chodzi o to żeby po zainjectowaniu .dll do jakiegoś procesu pojawiło się GUI aby zwiększyć prostotę obsługi takiego programu, bo w konsoli to tak średnio będzie. I tutaj właśnie moje pytanie, czytałem że
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@morsisko: Czyli chcesz zrobić bibliotekę (która po załadowaniu będzie swego rodzaju aplikacją), a nie aplikację?

Nie wiem czy Ci się to uda. Zależy, czy firefox (o ile w nim docelowo chcesz ładować swoją dllkę) pozwala na integrację pętli zdarzeń i czy załadowana dllka będzie w głównym wątku aplikacji (a bardzo w to wątpię).

Tak czy inaczej, to wykracza trochę poza moją wiedzę.
  • Odpowiedz
(która po załadowaniu będzie swego rodzaju aplikacją), a nie aplikację?

Tak. Głównie dlatego że od momentu gdy jestem częścią procesu mogę łatwo czytać pamięć i używać "kodu" assemblera(__asm) na czym najbardziej mi zależy. :P
  • Odpowiedz
Wczytuję dane z pliku do bazy #sqlite (w #qt). Są to pojedyncze wiersze z czterema wartościami:

insert into transactions values (%1,%2,%3,%4)
ale jest ich bardzo dużo. Jak wstawiałem do bazy #mssql to zajęło to trochę czasu, może z pół godziny, a w tempie w jakim wstawia się do sqlie, to zajmie chyba kilka dni... Plik ten sam, kod realizujący wczytywanie ten sam. Tabela taka sama,
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Cześć, chciałbym zapytać, czy jest jakiś sposób (a może to błąd?) żeby łącząc się ze stronką przez #qt (QNetworkAccessManager) "nabijając" wyświetlenia swojej stronie? Ogólnie chodzi o to, że mam stronkę z którą program łączy się tylko w pierwszych sekundach po uruchomieniu żeby sprawdzić dostępność nowej wersji i pobrać potrzebne dane do jego użytkowania, całość operacji trwa może z dwie sekundy, więc uruchomiłem na tej strone skrypt z google analytics z
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@morsisko: jeśli wstawiłeś kod JS z Google Analytics na stronę, to pobierając ją przez QNetworkAccessManager nie powodujesz wykonania tego JS i wysłania żądania do Google'a, pobiera się tylko kod HTML twojej strony (żadne zasoby: obrazy, zewnętrzne pliki CSS, zewnętrzne skrypty, itp. się nie pobierają ani nie jest wykonywany żaden kod JavaScript znajdujący się na stronie)

jeśli chcesz śledzić zdarzenia w aplikacji powinieneś wysłać osobne żądanie do Google Analytics, opis jak
  • Odpowiedz
#programowanie Kilka dni temu walczyłem z #opencv pod #qt creatorem - kilkukrotnie skompilowałem wersję 3.0 pod mingw, dodałem biblioteki do pliku *.pro i nawet udało mi się uruchomić przechwytywanie obrazu z pliku avi i wyświetlanie+przerabianie mat -> QPixmap i wrzucanie jako tło labela. Działało to biednie, bo bardzo powolnie i wywalało się po rozszerzeniu labela na szerokość większą niż 640px, ale dało się uruchomić. Dzisiaj chciałem
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@CichyGlosZTyluGlowy: pierdyliard problemów wszelkiego rodzaju, począwszy od instalacji/kompilacji/użycia prekompilowanych bibliotek po randomowe wypieprzanie się z niewiadomych przyczyn. Jeśli nie jesteś poweruserem opencv to nie skorzystasz z nowinek które tam są, a prędzej Cię szlag trafi. 2.4 jest stabilne w użyciu.
  • Odpowiedz
Właśnie ogarnąłem licencję LGPL #qt . Chciałem się tylko tak na krótką piłę upewnić - wymagają po prostu otwartości kodu? Jeśli wrzucę otwarte repo na Githuba wszystko "będzie dobrze"? Sorki mirki, laik kompletny here ( ͡° ͜ʖ ͡°)
#programowanie
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Myślicie, że #qt jest przyszłościowe? Zdobędzie większą popularność np. na urządzanie mobilne? W tej chwili można pisać aplikacje na Androida (nie wiem jak w praktyce) i chyba na WP(?). Widzę, że mimo tego, że nie jest aktualnie bardzo popularne (czy jest?), to wydaje mi się, że jest bardzo dynamicznie rozwijane. Do tego jeszcze bardzo fajny QtCreator.
Bawię się teraz trochę w cpp, dla gui postanowiłem właśnie wybrać qt i tak
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@psi-nos: ja w nim robię już od pewnego czasu i dla mnie to najlepszy framework do cpp. Praktycznie z każdym wydaniem dochodzi jakaś naprawdę fajna funkcjonalność. Nie wiem jak wygląda użycie Qt na raspberrypi, ale jeśli jeszcze nie ma wsparcia, to pewnie tylko kwestia czasu.

Ogólnie mocno polecam.
  • Odpowiedz
@enceladus71: Boost i/lub std do wątków. Generalnie boost moim zdaniem znacznie lepiej robi to co Qt próbuje robić w wielu wypadkach.
Do bazy danych nie mam jakiegoś swojego typu, po prostu zabawne, że Qt w ogóle próbuje coś takiego ogarniać.
  • Odpowiedz
@makumbanoob: coś pewnie popieprzone z opengl albo z czcionką. Na pewno zainstaluj jakiegoś fontpacka bo to ohydnie wygląda, a QtCreatora spróbuj odpalić bez opengl (nie wiem jak, polecam google)
  • Odpowiedz
Może ktoś dać jakieś wskazówki jak najłatwiej wyciągnąć dane ze swojej strony?

Najlepiej jakby dało się to zrobić z bibliotek #qt (używam #cpp) Teoretycznie zrobiłem wszystko z wykorzystaniem
i
i działało świtnie, później skompilowałem to i przerzuciłem do folderu i... nagle trzeba dorzucić jakieś 10 dllek za wykorzystanie 2 funkcji, trochę nie fajnie, dlatego może zna ktoś jakiś sposób żeby to zrobić lepiej?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Próbowałem też z jednak wciąż ten plik trzeba jakoś pobrać a te dodatkowe dllki ważą sporo


@morsisko: Do pobierania możesz użyć klasy QNetworkAccessManager z QtNetwork (dll waży około 1MB).
Nie wiem co z parsowaniem źródła, bo QtXml tak jak wspomniał @cebulak_pl może rzucać błędami przy stronach, które nie są poprawnym XML-em

jeśli używasz Qt5 i zależy ci na małym rozmiarze dllek, to rozważ przekompilowanie Qt bez ICU: Building Qt
  • Odpowiedz
@morsisko: skoro to twoja strona to może w ogóle nie używaj parserów, tylko pobierz curlem i wyciągnij te tagi wyrażeniem regularnym. Dla ułatwienia możesz je opakować w htmlowy komentarz. C-----o ale stabilnie.

A jeśli szukasz lepszego rozwiązania to może zamiast parsować dokument lepiej dobijać się pod jakiś url z jakimś parametrem gdzie wystawisz sobie dane w dogodnym formacie: json, xml, czy co tam wolisz.
c.....l - @morsisko: skoro to twoja strona to może w ogóle nie używaj parserów, tylko...

źródło: comment_1gkLqceWUh96zTvaZhSQv0pVj0UDIk4o.gif

Pobierz
  • Odpowiedz