Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. German
  4. QTextBrowser ans Ende springen
Qt 6.12 LTS is out! See what's new in the release blog

QTextBrowser ans Ende springen

Scheduled Pinned Locked Moved Solved German
7 Posts 2 Posters 3.2k 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.
  • P Offline
    P Offline
    peter_sailor
    wrote on last edited by
    #1

    qt 5.11.2. , creator 4.7.1

    Ich habe mit dem Creator einen QTextBrowser erzeugt. Wenn ich darin großeren Text darstellen will, möchte ich ans Textende springen (grundsätzlich). Frage:

    • Gibt es im Creator ein einstellbares Attribut?
    • Gibt es in irgendeiner Klasse einen "set >> ans Ende springen"?

    Beim Googeln habe ich folgende Lösung gefunden:
    QScrollBar *sb = ui->protokoll->verticalScrollBar();
    sb->setValue(sb->maximum());
    Die hat aber nicht funktioniert.

    Vielen Dank im Voraus für Euren Lösungsansatz
    Grüße
    Peter

    J.HilkJ 1 Reply Last reply
    0
    • P peter_sailor

      qt 5.11.2. , creator 4.7.1

      Ich habe mit dem Creator einen QTextBrowser erzeugt. Wenn ich darin großeren Text darstellen will, möchte ich ans Textende springen (grundsätzlich). Frage:

      • Gibt es im Creator ein einstellbares Attribut?
      • Gibt es in irgendeiner Klasse einen "set >> ans Ende springen"?

      Beim Googeln habe ich folgende Lösung gefunden:
      QScrollBar *sb = ui->protokoll->verticalScrollBar();
      sb->setValue(sb->maximum());
      Die hat aber nicht funktioniert.

      Vielen Dank im Voraus für Euren Lösungsansatz
      Grüße
      Peter

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #2

      Moin,
      @peter_sailor said in QTextBrowser ans Ende springen:

      Beim Googeln habe ich folgende Lösung gefunden:
      QScrollBar *sb = ui->protokoll->verticalScrollBar();
      sb->setValue(sb->maximum());
      Die hat aber nicht funktioniert.

      das ist aber grundsätzlich die Richtige Lösung. Wie genau hast du das den implementiert?


      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      1 Reply Last reply
      0
      • P Offline
        P Offline
        peter_sailor
        wrote on last edited by
        #3

        Hallo,

        erstellt habe ich es im Designer.

        Der Text wir mit

            ui->protokoll->setText(QString::fromUtf8(back));
        

        übergeben, wobei in der Variable back der darzustellende Text drinsteht.
        Diese Zeile verwende ich an mehreren Stellen im Programm.

        Grüße
        Peter

        J.HilkJ 1 Reply Last reply
        0
        • P peter_sailor

          Hallo,

          erstellt habe ich es im Designer.

          Der Text wir mit

              ui->protokoll->setText(QString::fromUtf8(back));
          

          übergeben, wobei in der Variable back der darzustellende Text drinsteht.
          Diese Zeile verwende ich an mehreren Stellen im Programm.

          Grüße
          Peter

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by
          #4

          @peter_sailor

          mmh, wie wärs mit folgendem, muss in den constructor deiner Klasse direkt hinter ui->setupUi(this);

          connect(ui->protokoll, &QTextBrowser::textChanged, [ui->protokoll] () ->void {
                 QScrollBar *sb = ui->protokoll->verticalScrollBar();
                 sb->setValue(sb->maximum());
          });
          

          Beispiel

          #include <QApplication>
          #include <QTextBrowser>
          #include <QScrollBar>
          #include <QTimer>
          
          int main(int argc, char *argv[])
          {
              QApplication a(argc, argv);
          
             QTextBrowser *br = new QTextBrowser();
              br->show();
          
              QObject::connect(br, &QTextBrowser::textChanged, [br] () ->void {
                     QScrollBar *sb = br->verticalScrollBar();
                     sb->setValue(sb->maximum());
              });
          
              QTimer *timer = new QTimer();
          
              QObject::connect(timer, &QTimer::timeout, [br]() ->void{
                    br->append("jfsdkjfhjsdkjfhsdkjfhdskjf");
             });
              timer->start(100);
          
             return a.exec();
          }
          

          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          1 Reply Last reply
          0
          • P Offline
            P Offline
            peter_sailor
            wrote on last edited by
            #5

            Hallo,
            vielen Dank.

            Quelltext:

            MainWindow::MainWindow(QWidget *parent) :
            QMainWindow(parent),
            ui(new Ui::MainWindow)
            {
            ui->setupUi(this);
            // QScrollBar *sb = ui->protokoll->verticalScrollBar();
            // sb->setValue(sb->maximum());

            connect(ui->protokoll, &QTextBrowser::textChanged, ui->protokoll ->void {
            QScrollBar *sb = ui->protokoll->verticalScrollBar();
            sb->setValue(sb->maximum());});

            Da schimpft mich der Comkiler aus >>C:\Users\PEB\Desktop\QT_Anwendungen\schach\mainwindow.cpp:42: Fehler: expected ',' or ']' in lambda capture list

            Die auskommentierten beiden Zeilen gehen zwar durch den Compiler, aber keine Wirkung.
            Grüße
            Peter

            J.HilkJ 1 Reply Last reply
            0
            • P peter_sailor

              Hallo,
              vielen Dank.

              Quelltext:

              MainWindow::MainWindow(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::MainWindow)
              {
              ui->setupUi(this);
              // QScrollBar *sb = ui->protokoll->verticalScrollBar();
              // sb->setValue(sb->maximum());

              connect(ui->protokoll, &QTextBrowser::textChanged, ui->protokoll ->void {
              QScrollBar *sb = ui->protokoll->verticalScrollBar();
              sb->setValue(sb->maximum());});

              Da schimpft mich der Comkiler aus >>C:\Users\PEB\Desktop\QT_Anwendungen\schach\mainwindow.cpp:42: Fehler: expected ',' or ']' in lambda capture list

              Die auskommentierten beiden Zeilen gehen zwar durch den Compiler, aber keine Wirkung.
              Grüße
              Peter

              J.HilkJ Offline
              J.HilkJ Offline
              J.Hilk
              Moderators
              wrote on last edited by
              #6

              @peter_sailor
              das ist richtig, die Syntax ist falsch, kannst das schon direkt aus meinem vorherigen Post copy &pasten

              @J.Hilk said in QTextBrowser ans Ende springen:

              connect(ui->protokoll, &QTextBrowser::textChanged, [ui->protokoll] () ->void {
                     QScrollBar *sb = ui->protokoll->verticalScrollBar();
                     sb->setValue(sb->maximum());
              });

              Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


              Q: What's that?
              A: It's blue light.
              Q: What does it do?
              A: It turns blue.

              1 Reply Last reply
              0
              • P Offline
                P Offline
                peter_sailor
                wrote on last edited by
                #7

                Hallo JH,

                ich habe jetzt gerade noch einen Lösungsweg gefunden:

                ui->protokoll->setText(QString::fromUtf8(back)); ui->protokoll->verticalScrollBar()->setValue(ui->protokoll->verticalScrollBar()->maximum());

                wenn ich gleich hinter der Ausgabe ... maximum() ... setze, dann funktioniert es. Das muss ich dann hinter jeder Ausgabe auch tun.

                Ist Dein Lösungsansatz eine generelle Einstellung?

                Grüße
                Peter

                1 Reply Last reply
                0

                • Login

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