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
Forum Updated to NodeBB v4.3 + New Features

How to change font weight at various locations within a QTextEdit

Scheduled Pinned Locked Moved Solved General and Desktop
22 Posts 2 Posters 10.7k Views 1 Watching
  • 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.
  • 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