Wie kann man die Properties der Messagebox ändern?

Alles rund um die Programmierung mit Qt
Antworten
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Wie kann man die Properties der Messagebox ändern?

Beitrag 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();
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Deine Palette ist eine Kopie und keine Referenz...
mathies
Beiträge: 149
Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt

Beitrag 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()
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag 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?
mathies
Beiträge: 149
Registriert: 9. Februar 2007 17:50
Wohnort: Erfurt

Beitrag 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 )
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag 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?
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag 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?
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag 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?
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

In der QtDemo gibts ein kleines Progrämmchen, mit dem kann man das testen...
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag von gundi_ »

Kannst du mir bitte sagen, unter welchem Link die Demo zu finden ist.

http://doc.trolltech.com/4.4/index.html ??
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag 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);
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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>
gundi_
Beiträge: 28
Registriert: 16. September 2008 14:04

Beitrag von gundi_ »

Danke für die Info. Aber ich habe das Beispiel nicht gesehen.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

qtdemo->Widgets->Window Flags
Antworten