Seite 1 von 1

[gelöst]QWidget probleme

Verfasst: 4. Mai 2007 00:32
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

Verfasst: 4. Mai 2007 07:03
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?

Verfasst: 4. Mai 2007 10:08
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.

Verfasst: 4. Mai 2007 10:14
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.

Verfasst: 4. Mai 2007 18:31
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

Verfasst: 4. Mai 2007 18:46
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();
   

}


Verfasst: 5. Mai 2007 18:12
von defenderLQ
habs nun gelöst, habs umgewandelt in ein QDialog...