[gelöst] QResizeEvent

Alles rund um die Programmierung mit Qt
Antworten
Matze-o
Beiträge: 24
Registriert: 6. Dezember 2006 11:54

[gelöst] QResizeEvent

Beitrag von Matze-o »

Moin, ich greife auf das resize Event zu, aber bei diesem aufbau:

Code: Alles auswählen

protected:
	virtual void resizeEvent(QResizeEvent* ev) {
		int widgetCenter = 0;
		widgetCenter = ev->size()->width()/2;
		lHeading->setGeometry( ( widgetCenter-100), 10, 200, 50);
	}
bekomme ich den Fehler: invalid use of undefined type `struct QResizeEvent'

Außerdem, wenn ich widget center einfach auf 150 setze lässt sich das Programm compilieren, aber wenn ich das programm starte bekomm ich der Vorgang "read2 konnte nciht ausgeführt werden.

Jemand ne Ahnung?

Thx

PS. Qt 4.2.2 MinGW gc++
Zuletzt geändert von Matze-o am 13. Februar 2007 10:52, insgesamt 1-mal geändert.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

#include <QResizeEvent> ???
Matze-o
Beiträge: 24
Registriert: 6. Dezember 2006 11:54

Beitrag von Matze-o »

Sooo, nah dem ich das included hab und den Syntax etwas geändert habe.

Code: Alles auswählen

protected:
	virtual void resizeEvent(QResizeEvent* ev) {
		int widgetCenter = 0;
		widgetCenter = this->width()/2;
		widgetCenter = ev->size().width()/2; 
		//lHeading->setGeometry( ( widgetCenter-100), 10, 200, 50);
	}
geht es, es klappt mit beiden weisen.

ich benutze jetzt aber this->width() und habe das include rausgenommen.
Ich bekomme aber immernoch nen Fehler, wenn ich das label Heading so verwenden möchte. Ich kann compilieren, aber wenn ich das Programm starte stürtzt er ab. (Befehl Read konnte nicht ausgeführt werden).
Qt 4.2.2
WinXP
MinGW GC++
Matze-o
Beiträge: 24
Registriert: 6. Dezember 2006 11:54

Beitrag von Matze-o »

Code: Alles auswählen

class mainWindow : public QWidget {
public:
	mainWindow() {
	int widgetCenter = 230/2;

	QLabel* lHeading = new QLabel("CAN-Bus test", this);
	lHeading->setFont(QFont("Times", 18, QFont::Bold));
	lHeading->setAlignment(Qt::AlignCenter);
	lHeading->setGeometry( (widgetCenter-100), 10, 200, 50);

	QLabel* lRXID = new QLabel("RXID", this);
	lRXID->setGeometry( 10, 50, 50, 20);

	QLineEdit* tRXID = new QLineEdit("", this);
	tRXID->setGeometry(10, 70, 100, 20);

	QLabel* lTXID = new QLabel("RTID", this);
	lTXID->setGeometry( 120, 50, 50, 20);

	QLineEdit* tTXID = new QLineEdit("", this);
	tTXID->setGeometry(120, 70, 100, 20);

	QLabel* lMessage = new QLabel("Message", this);
	lMessage->setGeometry( 10, 90, 50, 20);

	QLineEdit* tMessage = new QLineEdit("", this);
	tMessage->setGeometry(10, 110, 100, 20);

	QPushButton* bSend = new QPushButton("Send", this);
	bSend->setGeometry(120, 110, 100, 20);

	QLabel* lRecieved = new QLabel("Recieved:", this);
	lRecieved->setGeometry(10, 150, 100, 20);

	QListWidget* lWRecieved = new QListWidget(this);
	lWRecieved->setGeometry(10, 170, 210, 120);

	this->setWindowTitle("CAN-Bus test");
	}

protected:
	virtual void resizeEvent(QResizeEvent* ev) {
		int widgetCenter = 0;
		widgetCenter = this->width()/2;
		if (lHeading != NULL)
			lHeading->setGeometry( ( widgetCenter-100), 10, 200, 50);
	}

private:
	QLabel* lHeading;
	QLabel* lRXID;
	QLabel* lTXID;
	QLabel* lMessage;
	QLabel* lReceived;
	QLineEdit* tRXID;
	QLineEdit* tTXID;
	QLineEdit* tMessage;
	QPushButton* bSend;
	QListWidget* lWReceived;

};
So habe ich das jetzt umgeschrieben, jetzt lässt sich das Programm starten, aber das Label verändert sich nicht.
Qt 4.2.2
WinXP
MinGW GC++
Matze-o
Beiträge: 24
Registriert: 6. Dezember 2006 11:54

Beitrag von Matze-o »

Code: Alles auswählen

class mainWindow : public QWidget
{

public:
	mainWindow()
	{
		this->setGeometry(50, 50, 230, 300);
		this->setMinimumSize(230, 300);
		int widgetCenter = this->width()/2;

		lHeading = new QLabel("CAN-Bus test", this);
		lHeading->setFont(QFont("Times", 18, QFont::Bold));
		lHeading->setAlignment(Qt::AlignCenter);
		lHeading->setGeometry( (widgetCenter-100), 10, 200, 50);

		lRXID = new QLabel("RXID", this);
		lRXID->setGeometry( 10, 50, 50, 20);

		tRXID = new QLineEdit("", this);
		tRXID->setGeometry(10, 70, 100, 20);

		lTXID = new QLabel("RTID", this);
		lTXID->setGeometry( 120, 50, 50, 20);

		tTXID = new QLineEdit("", this);
		tTXID->setGeometry(120, 70, 100, 20);

		lMessage = new QLabel("Message", this);
		lMessage->setGeometry( 10, 90, 50, 20);

		tMessage = new QLineEdit("", this);
		tMessage->setGeometry(10, 110, 100, 20);

		bSend = new QPushButton("Send", this);
		bSend->setGeometry(120, 110, 100, 20);

		lReceived = new QLabel("Recieved:", this);
		lReceived->setGeometry(10, 150, 100, 20);

		lWReceived = new QListWidget(this);
		lWReceived->setGeometry(10, 170, 210, 120);

		this->setWindowTitle("CAN-Bus test");

		menuFile = new QMenu("&File");
		menuFile->addAction("&Close");

		menuHelp = new QMenu("&Help");
		menuHelp->addAction(QIcon("help.ppm"),"&?");

		menuBar = new QMenuBar(this);
		menuBar->addMenu(menuFile);
		menuBar->addMenu(menuHelp);
	}


protected:
	virtual void resizeEvent(QResizeEvent* ev)
	{
		int widgetCenter = 0;
		int widgetHeight = 0;
		int widgetWidth = 0;
		widgetCenter = this->width()/2;
		widgetWidth = this->width();
		widgetHeight = this->height();
		lHeading->setGeometry((widgetCenter-100), 10, 200, 50);
		lWReceived->setGeometry(10, 170, widgetWidth-20, widgetHeight-180);
	}

private:
	QLabel* lHeading;
	QLabel* lRXID;
	QLabel* lTXID;
	QLabel* lMessage;
	QLabel* lReceived;
	QLineEdit* tRXID;
	QLineEdit* tTXID;
	QLineEdit* tMessage;
	QPushButton* bSend;
	QListWidget* lWReceived;
	QMenu* menuFile;
	QMenu* menuHelp;
	QMenuBar* menuBar;

};
Das Problem war, dass ich die Objekte im konrstruktor lokal definiet habe.
Zuletzt geändert von Matze-o am 13. Februar 2007 18:56, insgesamt 1-mal geändert.
Qt 4.2.2
WinXP
MinGW GC++
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wieso schreibst du immer

Code: Alles auswählen

this->blabla
? Und nicht einfach nur

Code: Alles auswählen

blabla
?
Matze-o
Beiträge: 24
Registriert: 6. Dezember 2006 11:54

Beitrag von Matze-o »

Hmm, weil is schöner?

Kein Plan wirklich :D
Qt 4.2.2
WinXP
MinGW GC++
Antworten