Seite 1 von 1

Warum wird ein SVGWidget im Dialog nicht angezeigt?

Verfasst: 29. Juli 2008 01:26
von patlecat
Tach zusammen

Ich habe ein Problem: Ich habe in einem separaten Testprojekt einen Dialog aufgesetzt auf dem ich ein kleines SVG Widget erzeugte dessen Position ich im PaintEvent jeweils der Fenstergrösse anpasse.
Dies funktioniert im Testprojekt perfekt, nur wenn ich die Klassen dann in meine Applikation (ebenfalls mit Dialog) einbaute zeigte sich das Widget nicht mehr an :(

Hat jemand eine Idee was da los sein könnte?

Ich benutze Qt4.4, mit Eclipse und mingW unter Windows.
:?:

Verfasst: 3. September 2008 04:21
von Old Harmony
Du must das die Klasse (das Widget) dierekt oder mit nen Layout plazieren das geht mit:

im Layout:

Code: Alles auswählen

Layout->addWidget(new SVGWidget);
dierekt also ohne Layout:

Code: Alles auswählen

SVGWidget->setGeometry(0, 0, FensterBereite, FensterHoehe);
Wen du es direkt machen willst musst du natürlich über die Variabalen FensterBreite und FensterHoehe deren größen zu Ordnen.

Verfasst: 3. September 2008 09:09
von upsala
Größenänderungen bitte im resizeEvent und nicht im paintEvent.

Wie baust du das Widget ein? Im Designer oder per Code, wenn per Code, dann mal ohne parent erstellen, dann sollte es ja irgendwo auftauchen.

Ansonsten: Was sagt der Debugger?

Verfasst: 12. Oktober 2008 13:17
von patlecat
Danke für eure Tips, hab alles ausprobiert aber ich komm echt nid drauf. Mein Testprojekt hab ich exakt gleich erstellt wie das Originale, aber dort erscheint das SVG IMMER auf dem eigentlichen Projekt aber NIE :(

Testprojekt Code:

Code: Alles auswählen

AboutDialog::AboutDialog(QWidget *parent)
    : QDialog(parent),
      m_mySvg(":/new/prefix1/attenzione.svg", this)
{
	ui.setupUi(this);
	m_mySvg.resize(20, 20);
	m_mySvg.setToolTip(tr("Hit me!"));

}

AboutDialog::~AboutDialog()
{

}

bool AboutDialog::event(QEvent * qevent)
{
	return QDialog::event(qevent);
}

void AboutDialog::paintEvent(QPaintEvent * qevent)
{
	QDialog::paintEvent(qevent);
	//m_mySvg.move(this->width() - 21, 1);
}

void AboutDialog::resizeEvent(QResizeEvent* qevent)
{
	QDialog::resizeEvent(qevent);
	m_mySvg.move(this->width() - 21, 1);
}
m_mySvg ist ein Objekt der Klasse AboutButton. Die Klasse AboutButton wurde von QSvgWidget abgeleitet und AboutDialog von QDialog. Das SVGWidget wurde nicht im Designer eingefügt, sondern nur per Code.