Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to change font weight at various locations within a QTextEdit

How to change font weight at various locations within a QTextEdit

Scheduled Pinned Locked Moved Solved General and Desktop
22 Posts 2 Posters 10.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #9

    hi
    nothing pop out in the code but i wonder if all (test) Titles are same color.
    as you say
    if (sHex.length() == 1)
    sHex.prepend('0');

    so maybe other color can alter the 26 offset ?

    1 Reply Last reply
    1
    • M Offline
      M Offline
      mulfycrowh
      wrote on last edited by
      #10

      Yep. All titles are the same color.
      Here is the code to highlight the titles:

      	for (int Index = 0; Index < m_process.size(); ++Index)
      		m_tools->toHtml(ui.Command_Edit, referenceLocation[Index], 17 + msg_description.length(), 0, 133, 255, 25, false, false);
      

      But the trouble is that I encounter a shift about the highlighting. The first title is OK (obviously because 0), the following highlightings are false, I mean the location.
      I don't see any problem.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mulfycrowh
        wrote on last edited by
        #11

        I think I found the trouble : we have to substract the count of CR (or LF).
        But I have to add 2, I don't understand why. It would mean that there are 2 extra characters that are not text.
        So, for the algorithm of computing the location (vector referenceLocation - first element equals to 0), if I write:

        			if (Index != 0) {
        				referenceLocation.append(referenceLocation[Index - 1]);
        				referenceLocation[Index] += m_command->getCommandFileContent(UNCOMPRESSED, UNCODED).size();
        				referenceLocation[Index] += 17 + msg_description.length();
        				referenceLocation[Index] -= m_command->getCommandFileContent(UNCOMPRESSED, UNCODED).count('\n');
        				referenceLocation[Index] += 2;
        

        information : title is made of 17 characters and description,

        it runs perfectly !

        1 Reply Last reply
        1
        • mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #12

          good found.
          well a newline is \n\r on windows.
          so maybe thats why with 2.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            mulfycrowh
            wrote on last edited by
            #13

            Hi folks !

            I open this topic again because I get a weird thing.
            Here is what I wrote:

            void Tools::toHtml(QPlainTextEdit* edit, int location, int charcount, int red, int green, int blue, int fontsize, bool bold, bool underlined)
            {
            	QTextCursor cursor(edit->document());
            	QString highlight;
            	QString sfont_beg = "<FONT ";
            	QString sfont_end = "</FONT>";
            	QString scolor = "color=#" + toHexString(red) + toHexString(green) + toHexString(blue) + " ";
            	QString sbold = "span style=font-weight:bold ";
            	QString sunderlined = "span style=text-decoration:underline ";
            	QString ssize = "size=" + QString::number(fontsize) + ">";
            	QString sHtml;
            
            	cursor.setPosition(location, QTextCursor::MoveAnchor);
            	cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, charcount);
            	highlight = cursor.selectedText();
            	sHtml = sfont_beg + scolor.toUpper();
            	if (bold)
            		sHtml = sHtml.append(sbold);
            	if (underlined)
            		sHtml = sHtml.append(sunderlined);
            	sHtml = sHtml + ssize + highlight + sfont_end;
            	cursor.insertHtml(sHtml);
            
            }
            

            I call the function here:

            m_tools->toHtml(m_descriptionPlainTextEdit, 0, 17 + msg_description.length(), 0, 133, 255, 25, false, false);
            

            The title that has to be highlighted in blue has a length equal to 17 + msg_description.length().
            Everything perfectly runs the first time, not the following ones : all the text in the text edit is highlighted in blue.
            I don't see any trouble.

            PS: the text edit is cleared each time.

            Many thanks for help !

            1 Reply Last reply
            0
            • mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #14

              Hi
              ïf you put edit->clear();
              in top, it really should do the same each time.

              M 1 Reply Last reply
              0
              • mrjjM mrjj

                Hi
                ïf you put edit->clear();
                in top, it really should do the same each time.

                M Offline
                M Offline
                mulfycrowh
                wrote on last edited by
                #15

                @mrjj Hi ! What do you mean in top ? In toHtml ? It would delete all the content.

                mrjjM 1 Reply Last reply
                0
                • M mulfycrowh

                  @mrjj Hi ! What do you mean in top ? In toHtml ? It would delete all the content.

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by mrjj
                  #16

                  @mulfycrowh
                  Well you said
                  "PS: the text edit is cleared each time."
                  So I assumed you meant pr call to the function.

                  If all becomes blue it sounds like all is one paragraph.

                  You might need to use <p > </p> if the end result is something like

                  M 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @mulfycrowh
                    Well you said
                    "PS: the text edit is cleared each time."
                    So I assumed you meant pr call to the function.

                    If all becomes blue it sounds like all is one paragraph.

                    You might need to use <p > </p> if the end result is something like

                    M Offline
                    M Offline
                    mulfycrowh
                    wrote on last edited by
                    #17

                    @mrjj The idea sounds interesting. I'll test it.
                    But why everything OK the first time and all the text blue with big size font the other ones ?
                    It acts as the QTextEdit keeps backup of something.
                    Thanks again !

                    mrjjM 1 Reply Last reply
                    0
                    • M mulfycrowh

                      @mrjj The idea sounds interesting. I'll test it.
                      But why everything OK the first time and all the text blue with big size font the other ones ?
                      It acts as the QTextEdit keeps backup of something.
                      Thanks again !

                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #18

                      @mulfycrowh

                      • But why everything OK the first time and all the text blue with big size font the other ones ?

                      I have not check output of the code but I assume it becomes
                      one big paragraph and therefore it is all blue.

                      But only way to tell is to see the generated HTML. step by step.

                      1 Reply Last reply
                      0
                      • M Offline
                        M Offline
                        mulfycrowh
                        wrote on last edited by
                        #19

                        I added the following lines to toHtml ant it runs !

                        cursor.setPosition(charcount, QTextCursor::MoveAnchor);
                        cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, edit->document()->characterCount());
                        highlight = cursor.selectedText();
                        sHtml = "<FONT face=\"Arial\" font-weight=\"normal\" COLOR=#000000 size=\"3\">" + highlight + "</FONT>";
                        cursor.insertHtml(sHtml);
                        
                        1 Reply Last reply
                        1
                        • M Offline
                          M Offline
                          mulfycrowh
                          wrote on last edited by
                          #20

                          Nevertheless, I do not understand size=3 because, in the constructor I wrote:

                          	font.setPointSize(10);
                          

                          Why 3 instead 10 ?

                          3 gives the same size.

                          mrjjM 1 Reply Last reply
                          0
                          • M mulfycrowh

                            Nevertheless, I do not understand size=3 because, in the constructor I wrote:

                            	font.setPointSize(10);
                            

                            Why 3 instead 10 ?

                            3 gives the same size.

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by mrjj
                            #21

                            @mulfycrowh
                            Not sure what unit "size" is in. Could be an index to a list.
                            so its size "3".

                            M 1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @mulfycrowh
                              Not sure what unit "size" is in. Could be an index to a list.
                              so its size "3".

                              M Offline
                              M Offline
                              mulfycrowh
                              wrote on last edited by
                              #22

                              @mrjj Thank you for everything !

                              1 Reply Last reply
                              1

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved