• 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
983 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 (195,240 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 (195,240 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 (195,240 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,440 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 (158,660 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 595 wizyt
pytanie zadane 3 maja 2017 w Nasze projekty przez Bondrusiek Maniak (61,440 p.)
–1 głos
1 odpowiedź 186 wizyt
pytanie zadane 1 stycznia 2019 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
+1 głos
0 odpowiedzi 225 wizyt
pytanie zadane 11 czerwca 2020 w C# przez Yashe Dyskutant (7,720 p.)

93,440 zapytań

142,432 odpowiedzi

322,679 komentarzy

62,802 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

...