• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[Qt] Własny edytor kodu z zawijaniem wierszy

Object Storage Arubacloud
0 głosów
653 wizyt
pytanie zadane 14 czerwca 2018 w C i C++ przez niezalogowany
Zrobiłem własny edytor kodu z numeracją linijek i formatowaniem słów kluczowych, ale nie wiem jak zabrać się do zaimplementowania zawijania linijek dla przestrzeni nazw. Np. gdy mam funkcję czy klasę i chcę zwijać lub zawijać jej zawartość. Szukałem długo w Google, ale niczego nie znalazłem. Jest jakiś prosty sposób na to?
komentarz 14 czerwca 2018 przez Hiskiel Pasjonat (22,830 p.)
edytor do C++?
komentarz 14 czerwca 2018 przez niezalogowany
Edytor do mojej własnej aplikacji XML. Mam już opracowany dokument .xsd oraz klasę do parsowania i edytor kodu, ale brakuje mi w tym edytorze zawijania.
komentarz 14 czerwca 2018 przez Hiskiel Pasjonat (22,830 p.)
Kurcze, no dobra, bo myślałem o tym, żebyś liczył nawiasy klamrowe, tzn. Ile jest zamkniętych ile otwartych. A otwarty nawias o indexie x (zakładając, że będzie to w jakiejś tablicy) będzie początkiem np. Funkcji, jego zamknięcie jej końcem.
komentarz 14 czerwca 2018 przez j23 Mędrzec (194,920 p.)

@Kacper777777,

Szukałem długo w Google, ale niczego nie znalazłem.  Jest jakiś prosty sposób na to?

Jak by był jakiś prosty sposób, to byś go prawdopodobnie znalazł w miarę szybko w Google.

 

Nie napisałeś, jakiej kontrolki użyłeś jako okna edycji.

komentarz 16 czerwca 2018 przez niezalogowany

Wzorowałem się na tym przykładzie

http://doc.qt.io/qt-5/qtwidgets-widgets-codeeditor-example.html

i mam z lewej numerację linii przy użyciu klasy LineNumberArea dziedziczącej po QWidget. Nie mam tylko pojęcia jakim cudem to działa tak, że akurat jest po tej lewej stronie, skoro jedyne co łączy obiekt tej klasy z głównym oknem to:

lineNumberArea = new LineNumberArea(this);

Czyli jest dzieckiem głównego okna, ale nie ustawiam mu żadnego położenia ani layoutu, więc to dziwne, że tak idealnie po lewej stronie się dopasowuje. I tak myślałem sobie, żeby podobnie zrobić z tym zawijaniem wierszy, ale jak próbnie zrobiłem dodatkową klasę WrappingArea i zrobiłem identyczne metody jak LineNumberArea tylko rysowałem inny tekst to mi się sypnęło wszystko. 

komentarz 17 czerwca 2018 przez j23 Mędrzec (194,920 p.)
Myślę, że powinieneś rozważyć użycie jakiejś kontrolki edycyjnej, która umożliwia tego typu rzeczy. Może QScintilla?
komentarz 17 czerwca 2018 przez niezalogowany
W sumie mój projekt jest prawie ukonczony, ale trochę mi się znudził C++ i Qt. Przeszedłem od niedawna na C# i .NET, bo jest dla mnie czymś świeżym i prędzej można pracę znaleźć. No i łatwiej zarobić na wydaniu aplikacji niż w przypadku Qt bo nie trzeba wykupować licencji, więc albo się zarobi albo nie, ale na pewno się nie straci (mam nadzieję, że dobrze to gdzieś wyczytałem). W każdym razie widzę, że Scintilla .NET jest na darmowej licencji

https://github.com/jacobslusser/ScintillaNET
komentarz 17 czerwca 2018 przez j23 Mędrzec (194,920 p.)
Jeśli się nie mylę, Qt jest także (z wyjątkami) na licencji LGPL i nie musisz mieć licencji komercyjnej, żeby zarabiać na swojej aplikacji.  Warunek jest jeden: Qt musi być w bibliotekach .dll/.so.

2 odpowiedzi

0 głosów
odpowiedź 16 czerwca 2018 przez Bondrusiek Maniak (61,410 p.)

Witam,

musisz sobie sam to zaimplementować bo z tego co wiem to QTextEditor nie posiada opcji zwijania wierszy. Na  Twoim miejscu wzorowałbym się na funkcji Elide należącej do QLabel( W QML obiekt tekst posiada metodę elide) https://wiki.qt.io/Elided_Label. To by było coś w stylu Qt Creator

 

0 głosów
odpowiedź 17 czerwca 2018 przez mokrowski Mędrzec (156,140 p.)
QPlainTextEdit ma właściwość (ang. properties) LineWrapMode http://doc.qt.io/qt-5/qplaintextedit.html#lineWrapMode-prop

Wystarczy zagłębić się w dokumentację Qt. To jest wzór jednej z najlepiej napisanych dokumentacji.

Podobne pytania

+2 głosów
0 odpowiedzi 561 wizyt
pytanie zadane 3 maja 2017 w Nasze projekty przez Bondrusiek Maniak (61,410 p.)
–1 głos
1 odpowiedź 147 wizyt
pytanie zadane 1 stycznia 2019 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
+1 głos
0 odpowiedzi 170 wizyt
pytanie zadane 11 czerwca 2020 w C# przez Yashe Dyskutant (7,720 p.)

92,657 zapytań

141,550 odpowiedzi

319,990 komentarzy

62,026 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...