Qt Fenstergröße an Inhalt anpassen



  • Hallo zusammen,
    ich benutze schon seid einiger Zeit Qt, habe aber kaum Erfahrung mit Fenstern variabler Größe.

    Die Aufgabe: ich möchte ein einfaches Dialogfenster erzeugen um Fehlermeldungen u.ä. zu melden, das aus einem QLabel und einem einfachen OK Button besteht. Der Labeltext wird von Außen über eine setText(QString toSet) Methode zugänglich gemacht und soll veränderbar sein. Konkret:

    class InfoWidget : public QDialog
    {
        Q_OBJECT
    
    public:
        explicit InfoWidget(QWidget *parent = 0);
        ~InfoWidget();
    
        void showEvent(QShowEvent *event);
    
        void setText(const QString& toSet);
        const QString& getText() const;
    
    private:
        Ui::InfoWidget *ui;
    
        QString m_text;
    };
    

    Ein anderes Widget soll dann in der Lage sein, im Konstruktor ein InfoWidget Objekt dynamisch anzulegen und später über die setText und show Funktionen einfache, kurze Mitteilungen anzuzeigen.

    Mein Problem: Ich schaffe es nicht, dass sich die Fenstergröße an der Labelgröße orientiert. Ich möchte, dass das "Popupfenster" nur so groß ist wie nötig und dann auch unveränderbar bleibt. Bei mehrfacher Verwendung des Widgets bleibt das Fenster immer so groß wie der längste zuvor verwendete Text...
    Wie mache ich das am geschicktesten?

    Ist also eig. nichts ungewöhnliches, aber ich hänge trotzdem...

    Bin für jede Hilfe dankbar



  • Du musst einfach nur Layouts verwenden.
    Ansonsten ist deine Klasse unnötig, gibt doch schon QMessageBox. Und solche erzeugt man am allerbesten erst da, von man sie braucht, und da nimmt man auch direkt die statischen Methoden.



  • Danke arghonaut, das mit den Layouts habe ich versucht, aber wenn ich einmal einen langen Text anzeige bleibt die Größe des Labels und damit des Layouts immer so groß...

    Ansonsten ist deine Klasse unnötig, gibt doch schon QMessageBox

    Du hast Recht, ich versuche wirklich das Rad neu zu erfinden, habe bisher immer auf embedded Linux und/oder Symbian programmiert und keine "Popupfenster" gebraucht.

    Danke jedenfalls, kann geschlossen werden


Anmelden zum Antworten