Qt4: szöveg aláhúzása kétféleképpen?

 ( pelz | 2008. április 19., szombat - 22:16 )

Sziasztok!

Qt4-ben van gondom a szöveg formázásánál. Azon belül is az aláhúzással.

setFontUnderline() függvénnyel meg tudom adni, hogy legyen-e vagy sem aláhúzás.
setUnderlineStyle() fv.-vel a stílusát (egyenes, szaggatott, pontozott, hullámos)
setUnderlineColor() fv.-vel a színét.

Egy nagy gondom van. Nem tudok egyszerre kétféle stílust megadni. Erre azért lenne szükségem, mert a felhasználó pl. aláhúzottan ír valamit a szövegszerkesztőben, de közben a program ellenőrzi a helyesírást, és ha hibásan ír be valamit, akkor ugye kétféle aláhúzásnak egyszerre kellene megjelenni. A felhasználó sima fekete aláhúzásának és a hullámos piros vonalnak, ami a helyesírási hibát jelzi.

Tudtok-e valami módszert a kétféle aláhúzás egyszerre történő megjelenítésére.

Megnéztem az OpenOffice-t. Az tudja. (Lehet, hogy a japik ügyesebbek a norvégoknál?)

Várom segítségeteket!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Tipp:
setUnderlineStyle(QTextCharFormat::SingleUnderline | QTextCharFormat::SpellCheckUnderline) mit csinál?
--
A gyors gondolat többet ér, mint a gyors mozdulat.

A fordító ezeket a hibákat adja rá:

qpjchecktextedit.cpp:66: error: invalid conversion from ‘int’ to ‘QTextCharFormat::UnderlineStyle’
qpjchecktextedit.cpp:66: error: initializing argument 1 of ‘void QTextCharFormat::setUnderlineStyle(QTextCharFormat::UnderlineStyle)’

Ezek a stílus konstansok nincsenek felkészítve a bites VAGY műveletre, mert az értékük 0,1,2,3,4,5,6,7 lehet. Nem pedig 1,2,4,8,16, stb..., ahogy az ember gondolná olyan esetben, ha egyszerre két vagy több stílust is lehetne használni.

Gondolkodtam olyan lehetőségen (köztes megoldásként), hogy:

1, kierőszakolom rögtön a felhasználótól, hogy javítsa ki a hibát ilyen esetben vagy mondja rá, hogy szerinte jó.

2, Lehetne egy alternatív jelzésrendszer a programban. Pl. az első karakternél meghagynám a normál aláhúzást és csak a többinél lenne piros hullámvonal. Így pl. nyomtatáskor az első karakterből tudhatnám, hogy itt teljes aláhúzás kell, és pótolnám a többi karakterre is.

Szerintetek melyik a jobb?

Szerintem 1, nem fog ilyennel foglalkozni; pláne, ha mondjuk a titkárnő 10 ujjasan másol egy szöveget amit a főnök diktált, akkor nem a képernyőt fogja nézni, hanem a papírt és általában a végén nézi át a szöveget.

2. Mi van, ha van egy 10 betűs szavad, amit hibásan írt, de olyan csicsásan formázza, hogy csak minden 2. karaktere aláhúzott? Ezt hogy tartod nyilván?

Nézegettem assistantot egy kicsit, és a QTextEditnek van egy ExtraSelection struktúrája, amiben kijelölt szövegrészekre lehet átmeneti formázást megadni. Ha nem is aláhúzod pirossal, de mondjuk a hibásan írt szónak adhatsz piros hátteret, így még feltűnőbb is, mint a hullámos aláhúzás.

--
A gyors gondolat többet ér, mint a gyors mozdulat.

Hát igen!

Nem egyszerű a helyzet.

Nem rossz, amit javasolsz, de mi van, ha éppen olyan hátteret képzelt el a felhasználó, mint amit én hibajelzésre szántam?

Igazából ez csak kötözködés, és jónak tartom, amit javasoltál.

Ugyanakkor tudnod kell, hogy egy nem mindennapos irodai szövegszerkesztőben gondolkodom (arra vannak már kiforrott eszközök), hanem egy nagyon speciális, jelenleg még viszonylag szűk réteget érintő alkalmazásban, ahol a normál szövegszerkesztőkhöz képest pár darab nagyon különleges képességre lesz szükség. Tehát szinte biztos, hogy nem a titkárnők fogják elsősorban használni. Sokkal jobban el tudom képzelni, hogy maga a főnök (aki diktált a te példádban) ül le, és használja a progit.

Hát igen :)

Akkor javaslom tr3w megoldását, KOffice vagy qt-interest, tényleg nagyon segítőkészek és gyorsak! ;)

A másik, van egy QDevelop nevű eszköz, annak a forrását is megnézheted, elvileg tisztán Qt-ban íródott, hátha az abbéli textedit tartalamaz olyasmit, amire szükséged van!

--
A gyors gondolat többet ér, mint a gyors mozdulat.

4 dolgot is tudok ajánlani:

1. Hibánál mindig piros hullámvonalat használj, függetlenül az eredeti aláhúzástól, persze ekkor tárolni kell az igazi stílust...
Esetleg egyéb alternatív hibajelzés...

2. Ne az OOo-t nézd meg, hanem a KOffice-t, ha ott megoldották, akkor már csak azt kell kiderítened, hogy hogyan...

3. Ha valahogy le tudod kérdezni a hibás szó helyét a widgeten belül, akkor te magad is aláhúzhatod.

4. Kétdezd meg qt-interest levlistán, egyrészt, mert sok okos ember olvassa, másrészt, mert a fejlesztők is...

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o

Okos tanácsok!

Megfogadom.

A KOffice-t feltelepítettem, és az is tud egyszerre két aláhúzással szöveget megjeleníteni. Tehát képes a szöveget úgy megjeleníteni, hogy látszódjon a felhasználó által megadott aláhúzás és a program által jelzett helyesírási hiba is egyszerre.

Na már csak az a kérdés, hogy oldották meg.

Tudtok valami forráskód elérhetőséget a KOffice esetében?

Alapvetően 2 lehetőséged van:

1. a disztribúciód koffice "src" csomagjait telepíted, és abban megtalálod a forrást

2. a kde svn ből mazsolázgatsz: http://websvn.kde.org/trunk/koffice/ ; (vagy anonymous svn-el snv.kde.org/trunk/koffice ) mivel neked egyébként sem kell a teljes forrás.

Azt hiszem sikerült letölteni. Most már csak energia kellene a munkához.

Kösz!