[gelöst]QWidget probleme

Alles rund um die Programmierung mit Qt
Antworten
defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

[gelöst]QWidget probleme

Beitrag von defenderLQ »

hi

da ich immer wieder was teste hab ich nun ein problem das das aufrufen
eines QWidget dialogs nicht geht und denke irgendwo ist ein fehler..

hier mein QtChatWidget den ich aufrufe will vom ChatDialog

Code: Alles auswählen

QtChatWidget::QtChatWidget(QWidget * parent) 
:QWidget(parent)
 {

hier code ausschnitte aus ChatDialog:

Code: Alles auswählen

#include "chat/PopupChatDialog.h"
#include "chat/QtChatWidget.h"


void ChatDialog::privchat()
{
    //static PopupChatDialog *popupchatdialog = new PopupChatDialog();
    //popupchatdialog->show();
    
    static QtChatWidget *chatwidget = new QtChatWidget();
    chatwidget->show();

}
ich denke es liegt am Constructor ?

ich kann das PopupChatDialog.cpp ohne probs aufrufen aber
das QtChatWidget macht probleme

hier die fehler meldung:
-o temp\obj\ChatDialog.o gui\ChatDialog.cpp
gui\ChatDialog.cpp: In member function `void ChatDialog::privchat()':
gui\ChatDialog.cpp:377: error: no matching function for call to `QtChatWidget::Q
tChatWidget()'
gui\/chat/QtChatWidget.h:45: note: candidates are: QtChatWidget::QtChatWidget(co
nst QtChatWidget&)
gui\/chat/QtChatWidget.h:49: note: QtChatWidget::QtChatWidget(QW
idget*)
mingw32-make[1]: *** [temp\obj\ChatDialog.o] Error 1
Zuletzt geändert von defenderLQ am 5. Mai 2007 18:12, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie soll das gehen?

Code: Alles auswählen

QtChatWidget::QtChatWidget(QWidget * parent)

Code: Alles auswählen

static QtChatWidget *chatwidget = new QtChatWidget(); 
Und wieso static?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

Beitrag von defenderLQ »

hi

also static weil es soll z.b nur einmal für ein privat chat es aufrufen...
sonst wenn ich mehrmals die function aufrufe wird ja mehrere fenster geöffnet.

normaler weise müsste es den QWidget Chat dialog aufrufen oder?

es hat mal vor paar monaten geklappt nu weis ich nicht wieso jetzt grad nicht.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

defenderLQ hat geschrieben: sonst wenn ich mehrmals die function aufrufe wird ja mehrere fenster geöffnet.
Wir es so auch... das new wird in jedem Fall bei jedem Aufruf von ChatDialog::privchat() aufgerufen.
Was Du suchst ist sowas wie

Code: Alles auswählen

void ChatDialog::privchat() 
{
  if(m_chatwidget  == NULL)
    m_chatwidget = new QtChatWidget(this);
}
Allerdings sollte dann auch m_chatwidget in ctor mit 0 initialisiert werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

Beitrag von defenderLQ »

hi


Es kommen immer noch probleme...

Habs in einen anderen Dialog auch probiert aber auch das wieder ohne erfolg...
den ChatWidget da auszuführen

MessengerWindow.cpp

Code: Alles auswählen

#include "chat/QtChatWidget.h"



/** Constructor */
MessengerWindow::MessengerWindow(QWidget * parent)
: QWidget(parent)
{
  /* Invoke the Qt Designer generated object setup routine */
  ui.setupUi(this);
  
  QtChatWidget * m_chatwidget = new QtChatWidget(this)


  /* Hide platform specific features */
#ifdef Q_WS_WIN

#endif
}

void MessengerWindow::privatchat()
{
    //static PopupChatDialog *popupchatdialog = new PopupChatDialog();
    //popupchatdialog->show();
    
    //static QtChatWidget *chatwidget = new QtChatWidget();
    //chatwidget->show();
    
    if(m_chatwidget  == NULL)
    m_chatwidget = new QtChatWidget(this); 
    m_chatwidget->show();
   

}
MessengerWindow.h

Code: Alles auswählen

#ifndef _MESSENGERWINDOW_H
#define _MESSENGERWINDOW_H


#include "ui_MessengerWindow.h"
class QtChatWidget;

class MessengerWindow : public QWidget 
{
  Q_OBJECT

public:
  /** Default Constructor */
  MessengerWindow(QWidget *parent = 0);
  /** Default Destructor */



private slots:


  void privatchat();


  
private:


  
  QtChatWidget * m_chatwidget;

  /** Qt Designer generated object */
  Ui::MessengerWindow ui;
};

#endif
ich habs nun dieser fehler:
In file included from main.cpp:26:
./gui/MessengerWindow.h:86: error: ISO C++ forbids declaration of `QtChatWidget'
with no type
./gui/MessengerWindow.h:86: error: expected `;' before '*' token
mingw32-make[1]: *** [temp\obj\main.o] Error 1
mingw32-make[1]: Leaving directory
defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

Beitrag von defenderLQ »

hi

ja nun gings aber habe in mein MessengerWindow
das ChatWidget nun drin ist ja komisch...

es sollte als popup erscheinen.....
sieht ziemlich lustig aus was dabei rauskommt. :lol:

Bild


bei ausführen vom context menu kommt das ChatWidget mitten ins MessengerWindow rein...

Code: Alles auswählen

#include "chat/QtChatWidget.h"



/** Constructor */
MessengerWindow::MessengerWindow(QWidget * parent)
: QWidget(parent)
{
  /* Invoke the Qt Designer generated object setup routine */
  ui.setupUi(this);
 
  //QtChatWidget * m_chatwidget = new QtChatWidget(this)


  /* Hide platform specific features */
#ifdef Q_WS_WIN

#endif
}

void MessengerWindow::privatchat()
{
    //static PopupChatDialog *popupchatdialog = new PopupChatDialog();
    //popupchatdialog->show();
   
    //static QtChatWidget *chatwidget = new QtChatWidget();
    //chatwidget->show();
   
    if(m_chatwidget  == NULL)
    m_chatwidget = new QtChatWidget(this);
    m_chatwidget->show();
   

}

defenderLQ
Beiträge: 156
Registriert: 27. Juli 2006 20:53

Beitrag von defenderLQ »

habs nun gelöst, habs umgewandelt in ein QDialog...
Antworten