Skip to content
QtWS25 Last Chance
  • 0 Votes
    4 Posts
    311 Views
    JonBJ
    @Khamza First to answer your question. Your new code delays the update till after the text edit has been shown. In that sense it is similar to the QTimer approach. For unknown reason you are claiming the code does not work correctly until after the text edit has been shown. There are cases in Qt which this is necessary. In particular sizes of widgets are not calculated till they are actually shown, so code which requires to know a size is often delayed in one of the above two fashions. HOWEVER I was never convinced by your assertion "The function itself is called but neither text is inserted nor block format changed:". While I could believe that possibly an operation on textCursor() might require the text edit to be shown I never thought that insertPlainText() for sure would depend on that. It should be callable any time, including e.g. during construction. I have now had time to create a minimal repro. Here are the 3 files: #include "passwordshowarea.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); PasswordShowArea w; w.show(); return a.exec(); } #ifndef PASSWORDSHOWAREA_H #define PASSWORDSHOWAREA_H #include <QTextEdit> class PasswordShowArea : public QTextEdit { Q_OBJECT public: PasswordShowArea(QWidget *parent = nullptr); private: void init(); void updateBlockFormat(); }; #endif // PASSWORDSHOWAREA_H #include <QAbstractTextDocumentLayout> #include <QTimer> #include "passwordshowarea.h" PasswordShowArea::PasswordShowArea(QWidget *parent) : QTextEdit(parent) { init(); //doesn't work updateBlockFormat(); // works - gpt4 suggest // QTimer::singleShot(0, this, &PasswordShowArea::updateBlockFormat); } void PasswordShowArea::init() { // QObject::connect(document()->documentLayout(), &QAbstractTextDocumentLayout::update, // this, &PasswordShowArea::updatePasswordShowArea); setTextColor(palette().color(QPalette::Text)); } void PasswordShowArea::updateBlockFormat() { insertPlainText("Some text"); QTextBlockFormat fmt = textCursor().blockFormat(); fmt.setTextIndent(20); fmt.setLineHeight(fontMetrics().height() * 2, QTextBlockFormat::LineDistanceHeight); fmt.setBackground(Qt::red); textCursor().mergeBlockFormat(fmt); } I have made couple of tiny tweaks where I did not have all of your code. I added fmt.setBackground(Qt::red); so that we had something to see. And here is what I get: [image: f7a0cc88-52cf-437f-8f38-cd3c2983b5bf.png] You can see that not only do I get the inserted text but I do also get the QTextBlockFormat changes. Identical if I change it to only call updateBlockFormat() on the delayed timer. Ubuntu 24.04, Qt 6.4.2. Sooo.... I suggest you try just this code.
  • 0 Votes
    3 Posts
    266 Views
    S
    @SGaist Thank you very much. Gonna have a read trough it. :D
  • How to update height of QStandardItem/Delegate?

    Unsolved General and Desktop c++ qt delegate sizehint
    16
    0 Votes
    16 Posts
    1k Views
    S
    @SGaist Thank you very much. One last questions before closing this thread: Does using setListWigetItem (QListWidget) make an difference in performance compared to just using the widgets inside a scrollarea or is the overhead the same? Have a nice day! :)
  • 0 Votes
    30 Posts
    3k Views
    S
    @SGaist I actually have some of them built already. Thats why i was asking what would be better/ if my approach with the database would be viable. :) Have a nice easter.
  • Docking and moving a frameless window?

    Unsolved General and Desktop c++ qt framelesswindow menubar
    4
    0 Votes
    4 Posts
    804 Views
    Pl45m4P
    @StudentScripter This? [image: be5a8ab0-8e53-44e3-bfbd-2ec07f548924.png] It's called Split Window / Window Tile or something like that and is a Window Manager functionality (in your case, X on Windows 7/10). Because frameless Qt toplevel Widgets don't request a Window decoration, I think X does not recognize that you want to snap/split it anyway. This is probably not doable with Qt only and platform/Window Manager dependent, maybe you need some extension. Haven't found one though. Edit: If you are fine with not using the native functionality, you could try to implement something like that using your Qt widget... when enabled, calculate the requested area (1/2, 1/4...) of your screen size and geometry and resize + move your widget accordingly.
  • How to convert .ui to .h?

    Solved General and Desktop c++ qt conversion
    19
    0 Votes
    19 Posts
    2k Views
    JonBJ
    @StudentScripter Yes, you can do that. And it shows you how they implemented stuff.
  • QUndo/Redo crashes, help me investigate

    Solved General and Desktop c++ qt qundocommand
    7
    0 Votes
    7 Posts
    614 Views
    SGaistS
    @StudentScripter When you set an item in the model, the model becomes the owner of the item and thus controls its lifetime. If calling removeRows would leave the item(s) it contains intact, you would just have a memory leak by now.
  • 1 Votes
    12 Posts
    919 Views
    Chris KawaC
    @JonB said: Which I have always regraded as devil's spawn Agreed. I see blockSignals() as an advanced tool to be used with great care and only when you're very aware of all consequences in given case. Similar to sender(). Definitely not something to be applied on a "let's see if it helps" basis.
  • QT Desktop Environment

    Unsolved General and Desktop c++ qt linux desktop linux
    5
    0 Votes
    5 Posts
    1k Views
    SGaistS
    @rsmwall hi and welcome to devnet, Did you already check the projects I linked (agreed they are non trivial) ? Do you really intend to create a new DE or do you just need something more fancy than a single window application in which case the Qt Wayland module might be of interest.
  • Can QPainter.drawText rotate text ?

    Solved General and Desktop c++ qt svg
    4
    0 Votes
    4 Posts
    608 Views
    GilboonetG
    @TomZ Thank you, I follow the order you mentioned and it works fine. if (doSVG) { painter.setFont(fNum); painter.setPen(pNum); painter.save(); painter.translate(c.toPointF()+ b.toPointF() +tit->pos()); painter.rotate(radToDeg(ra)); painter.drawText(- ti->boundingRect().width()/2, -2, QString::number(n)); painter.restore(); } [image: f90e196d-9f24-4761-b97f-8be48db48754.png]
  • 0 Votes
    5 Posts
    1k Views
    supergS
    @SGaist That seems to be the solution, haha! Thanks.
  • Painting images over qml maps

    Unsolved QML and Qt Quick qml qml map qml rendering qml c++ c++ qt
    1
    1 Votes
    1 Posts
    397 Views
    No one has replied
  • 0 Votes
    6 Posts
    810 Views
    JonBJ
    @Turbotroop OK, so: Is the code pasted now currently what you have, exactly? What error do you currently have? Have you acted on the previous comments? For example: although it won't generate a compilation error, it does not make any sense to set up all these boxes or arrays in the main window destructor, does it? Why not in, say, the constructor instead?
  • Can't set QComboBox/QSlider margins

    Solved General and Desktop c++ qt margins
    7
    0 Votes
    7 Posts
    887 Views
    bibasmallB
    @Chris-Kawa thank you, it helped to set the margins!
  • 0 Votes
    17 Posts
    8k Views
    R
    @jsulm ou! thank you! you had helped me a lot!!
  • 0 Votes
    3 Posts
    640 Views
    SGaistS
    Hi and welcome to devnet, That's a bit too vast of a topic to have a simpler answer. What element of Cyber Security do you have in mind ? At what level ? Cyber Security starts from giving people access to certain hardware / applications to the boot process of your machines/devices, the kernel/OS they are running, the applications you are using on them, the libraries that composes these applications, the devices you plug in the machines, etc.
  • 0 Votes
    7 Posts
    4k Views
    JonBJ
    @SimonSchroeder QDir is only for directories, not for files. So it is not a (suitable) candidate for general "file paths".
  • 0 Votes
    4 Posts
    775 Views
    J.HilkJ
    @Zwenig die einfachste Methode ist der package manager. den findest du eigentlich vorinstalliert in der Menüleiste, einfach nach Creator oder QtCreator suchen und installieren. darüber bekommst du auch eine version von Qt (Bibliothek), sollte neuer als 5.11 sein, also sollte dein Programm damit auch kompilieren
  • QT compiler linker error

    Unsolved The Lounge qt creator makefile error c++ qt
    2
    0 Votes
    2 Posts
    513 Views
    jsulmJ
    @ELIF Please post the actual compiler/linker error. it is somewhere above of what you posted.
  • 0 Votes
    7 Posts
    1k Views
    G
    when I rerun, I am told that QtWebView cannot contain more than one item, so I guess I cannot save a c++ class in QtWebView, going through the doc I found that the c++ classes I needed had already been extended to the quick module. So, I'm going to use the c++ classes in this module instead. Thank you very much for your help.