Seite 1 von 1

Wie kann man die Properties der Messagebox ändern?

Verfasst: 8. Oktober 2008 09:06
von gundi_
Guten Morgen alle zusammen,

ich habe eine Frage zur Messagebox. Ich will die Hintergrundfarbe, die Rahmenfarbe der Messagebox und die Textschriftfarbe ändern s.u. Code. Wenn ich das Programm ausführe, sehe ich die Messagebox aber nicht die geänderten Properties.

Kann mir jmd einen Tipp geben?

QMessageBox* msg = new QMessageBox(" ", " ", QMessageBox::NoIcon, QMessageBox::Ok, 0 , 0);
QPalette palette = msg->palette();
msg->setText("Messagebox-Test");
palette.setColor(QPalette::Base, QColor(0,0,255));
palette.setColor(QPalette::Window, QColor(255,247,185));
palette.setColor( QPalette::WindowText, QColor(255,0,0));
msg->exec();

Verfasst: 8. Oktober 2008 09:09
von upsala
Deine Palette ist eine Kopie und keine Referenz...

Verfasst: 8. Oktober 2008 09:13
von mathies
Das passt doch soweit, Du musst nur die geänderte Palette auch wieder setzen bevor Du da was sehen kannst! Ich glaube mit

msg->setPalette()

Verfasst: 8. Oktober 2008 09:27
von gundi_
Hi,

ja, das stimmt. Jetzt funktioniert die Messagebox mit msg->setPlatte(palette). Aber der Rahmen enthält immer noch einen Text (Caption), obwohl ich keinen Text übergebe. Woran liegt das?

Verfasst: 8. Oktober 2008 09:32
von mathies
Qt schreibt glaube standardmäßig schon etwas rein, Du kannst das aber glaube auch selbst bestimmen, was drin stehen soll mit

setWindowTitle ( const QString & title )

Verfasst: 8. Oktober 2008 10:15
von gundi_
Noch ne Frage: Wenn ich msgBox->setWindowsTitle einstelle, dann kriege ich Fehlermeldung mit no member function in qmessagebox. Wie kann ich diese Fkt. verwenden?

Verfasst: 8. Oktober 2008 10:21
von gundi_
Upps, das war ein Tippfehler von mir. Keine Fehlermeldung. Aber ich habe immer noch ein Caption. Ich setze das auf setWindowTitle(" "). Woran liegt das?

Verfasst: 8. Oktober 2008 11:19
von gundi_
Hi Leute,

das ist doch ein anderes Problem. Ich brauche den typ. Windowsrahmen (mit Schließbutton etc) nicht. Ich will eine Messagebox haben, die nur eine blaue Umrandung hat d.h. ohne Titel. Wie erreicht man sowas? Ich habe das mit msg->setWindowFlags(Qt::Popup) versucht. Aber dann verschwindet der ganze Rahmen.

Könnt ihr mir bitte Tipps geben?

Verfasst: 8. Oktober 2008 13:07
von gundi_
Hallo nochmal,


ich bin der Lösung näher gekommen. Man muss im Konstruktor der MessageBox einige Flags setzen, die die Windows Titlebar entfernen. Aber bei mir hat die Kombination nicht geklappt. Ich arbeite auf der Linux Platform.

QMessageBox::QMessageBox ( const QString & caption, const QString & text, Icon icon, int button0, int button1, int button2, QWidget * parent = 0, Qt::WFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint )

Das WFlag soll richtig kombiniert werden. Habe aber die richtige Kom. noch nicht zustande gebracht.

Hat jemand das schon verwendet?

Verfasst: 8. Oktober 2008 13:38
von upsala
In der QtDemo gibts ein kleines Progrämmchen, mit dem kann man das testen...

Verfasst: 8. Oktober 2008 13:42
von gundi_
Kannst du mir bitte sagen, unter welchem Link die Demo zu finden ist.

http://doc.trolltech.com/4.4/index.html ??

Verfasst: 8. Oktober 2008 13:52
von gundi_
Ich kann irgendwie noch nicht mal die Größe der Messagebox ändern. Was mache ich denn falsch?

// QMessageBox* msg = new QMessageBox(" ", " ", QMessageBox::NoIcon, QMessageBox::Ok, NULL , Qt::WindowType_Mask);
QMessageBox* msg = new QMessageBox(NULL);
msg->setWindowTitle(QObject::tr("Test"));
msg->setFixedSize(450,200);

Verfasst: 8. Oktober 2008 20:14
von solarix
gundi_ hat geschrieben:Kannst du mir bitte sagen, unter welchem Link die Demo zu finden ist.

http://doc.trolltech.com/4.4/index.html ??
man öffne eine Konsole und gebe dort "qtdemo" ein.. danach drücke man <enter>

Verfasst: 9. Oktober 2008 15:16
von gundi_
Danke für die Info. Aber ich habe das Beispiel nicht gesehen.

Verfasst: 10. Oktober 2008 14:41
von solarix
qtdemo->Widgets->Window Flags