@NewEpisode: Mało odkrywczo, ale całą wiedzę pochłonąłem z internetu :) Największym problemem mogą być tylko bindingi python-qml i qml-python pamiętam, że był problem z typami i na pograniczu interfejsu trzeba było się dosyć mocno pilnować. Teraz pewnie napisał bym ją zupełnie inaczej, ale tak to jest gdy się pisze pierwszą appkę w nowym języku (mam na myśli qml). Teraz to bym pewnie to napisał w electronie, daje to dużo większą prostotę
#cpp #qt5 #programowanie

Mam pytanie odnośnie instalacji opencv do QT. Postępuję zgodnie z krokami i mam teraz taki: "where to build the binaries"
Oni podają taką ścieżkę -> C:\opencv-build

Natomiast ja mam tylko folder opencv a w nim build oraz sources (na dysku C)
Czy chodzi o stworzenie nowego folderu na dysku C?

Tutaj link do całej procedury:

https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
yras8 - #cpp #qt5 #programowanie


Mam pytanie odnośnie instalacji opencv do QT. P...

źródło: comment_1615894343rMTRpfiDO7qL0NnryiRItu.jpg

Pobierz
@chodzacy_internet: powyżej wkleiłem linka do licencji aplikacji napisanej w QT5 z projektu yocto wiec oni na pewno są zgodni. Są tam dwa wymagania. Obok masz też licencje komercyjną. Warto ją dodać dla zastosowań komercyjnych.

a z ciekawości czym się program zajmuje?
@juzjuzjuz apka do zarządzania taskami (zliczanie czasu poszczególnych zadań) z synchronizacją do openprojecta przez te ichniejsze API. W firmie u mnie używamy OP, który imo. ma drewniany interfejs webowy więc stwierdziłem, że po co ręcznie wypełniać godziny w taskach jak może mi to apka robić.
Robie projekt na uczelnie w qt creatorze w c++. Już skończyłem ale wyskoczył problem przy uruchamianiu pliku exe. Okazało się, że muszę wrzucić biblioteki do folderu z projektem. Zrobiłem to i działa ale pojawił sie innym problem, po wrzuceniu biblioteki "Qt5Core.dll" program nie czyta mi wszystkich Pixmapów, a bez niej nie mogę odpalić pliku exe. Ktoś może wie jak to naprawić? :D
#cpp #qt5 #qt #programowanie
@Czokowoko: DZIAŁA! wcześniej konwertowałem z jpg na png i to zepsuło te zdjęcia .... taki długpi błąd a tyle zachodzu ale tak czy siak nauczyłem się czym jest windeploqt. Dzięki jeszcze raz. Wreszcie mogę oddać projekt...
#linux #debian #programowanie #qt5 #qt #cpp

Linux Debian 10, program napisany w qt5.7
I błąd:

error while loading shared libraries: libQt5WebEngineWidgets.so.5: cannot open shared object file: No such file or directory

Na urządzeniu gdzie jest zainstalowane całe środowisko - działa.
Na urządzeniu gdzie brak kompilatora aplikacje z Qt5WebEngineWidgets nie działają, te które nie mają tego widgetu działają, zasadniczo więc Qt5.7 jest ale brakuje biblioteki WebEngine (albo z innego powodu coś nie tak).
@Passer93: pewnie, że lepiej, ale wtedy nie byłoby react native czy ionic. Jeśli jest jakiś dajmy na to software house gdzie są sami devi javascript, to co, firma ma zatrudnić devów c++ do projektu, aby zaspokoić wymaganie klienta, który dodatkowo zażyczył sobie aplikację desktopową? Z bisnesowego punktu widzenia ten projekt jest super.
Witam, mam taki kod: https://pastebin.com/k7cKjy8r
W pewnym przypadku ma on wyświetlić okno dialogowe i ustawić zaznaczenie elementu, gdy to okno się zamknie lub, gdy się wybierze cancel. Jednak setCurrentItem powoduje ponowne wywołanie onlistWidgetNotescurrentItemChanged czego efektem jest ciągłe ponowne pojawianie się okna dialogowego po jego zamknięciu. Użycie blockSignals sprawia, że problem znika, ale zaznaczenie nie wraca na poprzedni element. Próbowałem wielu innych rozwiązań np. użycie zmiennej przechowującej informację o tym czy
@lionbest: Tzn. mam zrobić pole klasy głównego okna typu QListWidgetItem*, przy każdej zmianie focusa zapisać kopię zmiennej QListWidgetItem *current do tego pola i, gdy zmieni się focus pokazać okno, gdy tak kopia będzie taka sama jak zmienna QListWidgetItem *previous?
@arkadiusz97:

rzy każdej zmianie focusa zapisać kopię zmiennej QListWidgetItem *current do tego pola

Nie, tylko wtedy kiedy faktycznie chcesz zmienić element na ten w current.

gdy zmieni się focus pokazać okno, gdy tak kopia będzie taka sama jak zmienna QListWidgetItem *previous

No chyba nie. Ty nie chcesz pokazywać okienka znowu, czyli jeżeli poprzednie pokazanie okienka spowodowało wykonanie się:
ui->listWidgetNotes->setCurrentItem(previous);

Co spowodowało znowu zmienienie elementu na poprzedni, czyli ten który masz
@arkadiusz97: sygnałami?

w momencie tworzenia oknaY robisz connecta między sygnałami oknaY i slotami w dzieciach oknaX. OknoY łączy sygnały swoich dzieci z sygnałami wysyłąnymi przez same oknoY. OknoX w slotach robi co trzeba. Na usunięcie oknaY najpierw rozłączasz oknoY i oknoY. Coś w tym stylu:

dzieciOknaX <-connect-> oknoX <- connect na czas istnienia oknaY -> oknoY <-connect-> dzieciOknaY

Można też inaczej (np przekazując w konstruktorze oknaY referencję do oknaX), ale sygnałami
@Leinnan: No to jak powiedzialem, na drugim branchu #!$%@? commity w 1 a potem push --force na zdalne repo, po pushu normalnie mergujesz na master jak kazdy inny branch. Force musi być bo zapewne commity z fixami ktore poszly do squasha byly juz wrzucone na zdalne repo więc musisz nadpisać historię. Chyba tez jest coś takiego jak git merge --squash ale nie jestem tak into git, wersja wyżej działała dla mnie
Hej :) Czy mógłby ktoś wytłumaczyć mi w prosty sposób zasadę działania model/widok w Qt? Mam w swoim programie QTableView dziedziczący po QAbstractTableModel i potrzebuję mieć gdzieś zebrane obiekty z mojej klasy w formie tabeli, które do tego QTableView będą udostępniały jedynie grafikę w formie QPixMap czy czymś w ten deser, a sam zbiór tych moich obiektów będzie później przetwarzany przez oddzielną funkcję. Jak to ugryźć? Chcę, żeby ten QTableView był takim
Witam. Mam następujący problem w QT, z którym męczę się od kilku godzin i niestety nie mogę znaleźć rozwiązania: Próbuję dodawać QTableWidget'y do VerticalLayout'a poprzez naciskanie przycisku(z każdym następnym naciśnięciem powinna pojawić się kolejna tabela). Niestety dzieje się to tylko po pierwszym naciśnięciu przycisku, a z każdym kolejnym nic się już nie dzieje(pomimo, że tabele pojawiają się w liście "lista_tabel"). Zauważyłem, ze w tych kolejnych razach pole "LayoutStretch" zaczyna przyjmować wartość -1
D.....i - Witam. Mam następujący problem w QT, z którym męczę się od kilku godzin i n...

źródło: comment_GasjxYp2ZEOBaPWKSrp4a4Ia2AMFgh9E.jpg

Pobierz
@DJ_Luki: Jakby ktoś miał kiedyś taki problem: Do layout'a dodawałem widget, który jeszcze nie istniał(brałem go ze złego indeksu) - ten insert powinien być dla lista_linii.size() a nie dla lista_linii.size() - 1 ;)
Mirasy, jak walidować TextFieldy w qml? Mam forma, takiego jak na załączonym obrazku. Chciałbym zrobić tak, że jeżeli TextField jest pusty lub występuje błąd przy walidacji przycisk Akceptuj nie pojawia się. W jaki sposób mogę to uzyskać? Póki co napisałem coś takiego: https://pastebin.com/E9buhbEv . W doc dotyczących qt quick jest strasznie mało odnośnie walidacji.

Z góry dziękuje Mirony za pomoc.

#cpp #qt5 #qt #naukaprogramowania
GaHee - Mirasy, jak walidować TextFieldy w qml? Mam forma, takiego jak na załączonym ...

źródło: comment_3ffMu9ldjSdcviWkK9SMO82Peb4m4Mc7.jpg

Pobierz
@GaHee: O widzę że Qt Quick Controls 2, prawidłowo ( ͡° ͜ʖ ͡°).

Ja robię tak że opakowuję TextFielda jakiś komponent i dorabiam przykładowo tam taką metodę:

function check() {
    if(text=="") {
        blinkRed.start();

        ToolTip.show(qsTr("This field cannot be empty."));
        forceActiveFocus();
        return false;
    }
    return true;
}
Potem lecę po liście i odpalam wszystkim po kolei check() w bindingu:

acceptButton.enable: nameField.check()&&surnameField.check()&&emailField.check()
!blinkRed to SequentialAnimation na textField.background.color czy coś takiego.
@GaHee: No ja mam to jeszcze zrobione w GroupBox i całym group box migam a miganie jest trywialne:

SequentialAnimation {
        id:blinkRed
        ColorAnimation {
            target: background.border
            property: "color"
            to: "red"
            duration:500
        }
        PauseAnimation {
            duration: 4000
        }
        ColorAnimation {
            target: background.border
            property: "color"
            to: "black"
            duration:500
        }
    }

Jeszcze można użyć SequentialAnimation.loops by parę razy mignęło.
Szukam i szukam i odpowiedzi nie mogę znaleźć. Zabrałem się dzisiaj za qt quick i już na starcie pojawił się problem. Ustawiłem sobie ContextProperty na swój "viewModel", gdzie mam QList. Pakuje do niej powiedźmy obiekty klasy Person, jak zbindować tą listę z ComboBoxem, żeby wyświetlaną wartością było pole Name. Z góry dziękuje.
#cpp #qt #qt5 #qml #naukaprogramowania
@GaHee:
Ustawiasz textRole na property która jest koniecznie QString(albo coś co zmienia się do jsowego stringa):

ComboBox {
        textRole:"myProperty"
        
model: myArray
    }

Generalnie na viewModel trzeba uważać bo każdy rodzaj obiektu działa inaczej. Najbardziej odpowiednie i najtrudniej jest zrobić własny model w C++ dziedzicząc po QAbstractListModel. Generalnie jak przekażesz tablicę to większość obiektów jako model przyjmie to w pewien wrapper który wystawia tylko jedną zmienną modelData do którego
@lionbest: Pamiętaj że w klasie którą wrzucasz do listy musisz mieć to property w pełnie zadeklarowane:

Q_PROPERTY(QString myProperty READ myProperty WRITE setMyProperty NOTIFY myPropertyChanged)
Chyba że ta wartość zawsze będzie stała (od powstawia obiektu) i deklarowanie sygnału NOTIFY jest bezensu wtedy deklarujesz tak:

Q_PROPERTY(QString myProperty READ myProperty CONSTANT )
Inaczej QML się burzy że nie ma sygnału NOTIFY.
kod na pastebin

Mam sobie taki kod, to nie jest prawdziwy program tylko wyciągnąłem samą zasadę działania żeby działało jak najprościej i można było sobie wkleić jak ktoś ma Qt Creatora:
1) Mam listę obiektów i nie chcę w żaden sposób na nią wpłynąć,
2) Chcę wybrać kilka jej elementów (w przykładzie: te których nazwa nie jest pusta, lista indeksów) i posortować na podstawie jakichś ich wartości,
3) Chcę otrzymać listę indeksów