MisterHabakus
Grünschnabel
Hallo zusammen
Ich habe mich an die GUI Programmierung mit Qt4 in C++ gewagt. Als System verwende ich Windows 7, Visual Studio 2008 und das Qt Addin (.ui Dateien können bequemer erstellt und dann direkt in der IDE verwendet werden). Ich habe ein kleines Testprogramm geschrieben, welches folgendes machen soll:
Damit ich die ganzen GUIs nicht von Hand erstellen muss, verwende ich dafür den Qt Designer und binde diese zur Compiletime ein.
Nun zu meinem Problem. Immer wenn ich die Methode setNewText mit dem Parameter QString (text) aufrufe um im Mainwindow das Textfeld plainTextEdit zu setzen, bekomme ich einen Compilererror C2227 (MS Link wäre hier http://msdn.microsoft.com/en-US/library/0z8wd049(v=vs.80) ). Nur werde ich daraus nicht ganz schlau, denn QString wird ja als Charakterpointer mitgegeben und plainTextEdit ist der Mainclass bekannt.
@Edit: Error hinzugefügt und Post ausgebessert
Hier mein Code:
ide.cpp
ide.h
preferences.cpp
preferences.h
Error:
Mit freundlichen Grüssen
Habakus
Ich habe mich an die GUI Programmierung mit Qt4 in C++ gewagt. Als System verwende ich Windows 7, Visual Studio 2008 und das Qt Addin (.ui Dateien können bequemer erstellt und dann direkt in der IDE verwendet werden). Ich habe ein kleines Testprogramm geschrieben, welches folgendes machen soll:
- Mainwindow (Class IDE) erstellen
- Preferenceswindow (Class Preferences) per "Singleton" erstellen
- Preferencewindow anzeigen, wenn der Button dafür angeklickt wurde
- Bei Klicken des Button ButtonSave soll auf der Textfläche des Mainwindow ein Text ausgegeben werden (Class Preferences ruft eine Methode in IDE auf)
Damit ich die ganzen GUIs nicht von Hand erstellen muss, verwende ich dafür den Qt Designer und binde diese zur Compiletime ein.
Nun zu meinem Problem. Immer wenn ich die Methode setNewText mit dem Parameter QString (text) aufrufe um im Mainwindow das Textfeld plainTextEdit zu setzen, bekomme ich einen Compilererror C2227 (MS Link wäre hier http://msdn.microsoft.com/en-US/library/0z8wd049(v=vs.80) ). Nur werde ich daraus nicht ganz schlau, denn QString wird ja als Charakterpointer mitgegeben und plainTextEdit ist der Mainclass bekannt.
@Edit: Error hinzugefügt und Post ausgebessert
Hier mein Code:
ide.cpp
C++:
#include <QObject>
#include <QString>
#include <QTextStream>
#include "ide.h"
IDE::IDE(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags)
{
setupUi(this);
connect(actionPreferences, SIGNAL(triggered()), this, SLOT(Preferences()));
}
IDE::~IDE()
{
}
void IDE::Preferences()
{
GuiPreferences.show();
}
void IDE::setNewText(QString text)
{
plainTextEdit->setPlainText(text); // Hier kommt es zum Fehler
}
ide.h
C++:
#ifndef IDE_H
#define IDE_H
#include <QtGui/QMainWindow>
#include "ui_ide.h"
#include "ui_preferences.h"
#include "preferences.h"
class IDE : public QMainWindow, public Ui::IDEClass
{
Q_OBJECT
public:
IDE(QWidget *parent = 0, Qt::WFlags flags = 0);
~IDE();
Preferences GuiPreferences;
static void setNewText(QString text);
private slots:
void Preferences();
private:
Ui::IDEClass ui;
public:
};
#endif // IDE_H
preferences.cpp
C++:
#include "ide.h"
#include "preferences.h"
#include <QWidget>
#include <QCheckBox>
Preferences::Preferences(QWidget *parent)
{
show_status = false;
setupUi(this);
QObject::connect(ButtonClose, SIGNAL(clicked()), this, SLOT(Close()));
QObject::connect(ButtonSave, SIGNAL(clicked()), this, SLOT(startSend()));
}
void Preferences::show()
{
if(!show_status)
{
QWidget::show();
show_status = true;
}
}
void Preferences::Close()
{
show_status = false;
close();
}
void Preferences::startSend()
{
QString text = "Hallo 123";
IDE::setNewText(text);
}
preferences.h
C++:
#ifndef PREFERENCES_H
#define PREFERENCES_H
#include <QWidget>
#include "ui_preferences.h"
class Preferences : public QWidget, private Ui::Preferences
{
Q_OBJECT
public:
Preferences(QWidget *parent = 0);
void show();
private slots:
void Close();
void startSend();
private:
bool show_status;
};
#endif
Error:
Code:
------ Build started: Project: IDE, Configuration: Release Win32 ------
Compiling...
ide.cpp
.\ide.cpp(26) : error C2227: left of '->setPlainText' must point to class/struct/union/generic type
Build log was saved at "file://C:\...\IDE\Release\BuildLog.htm"
IDE - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Mit freundlichen Grüssen
Habakus
Zuletzt bearbeitet: