Seite 1 von 1

Mein eigener Slot ...

Verfasst: 9. Januar 2008 16:03
von bueffel2
... wird leider nicht ausgeführt. Und damit "Hallo und danke für das lesen des Threads schon einmal im voraus"
Es handelt sich um folgende Idee: Ich möchte einen RadioButton der beim druecken eine QMessageBox anzeigt. Habe dafür den slot setMsg() deklariert und mit connect angebunden.

Hier erstmal der gesamte Code:

Code: Alles auswählen

#include "mywidget.h"
#include <QApplication>
#include <QMessageBox>
#include <QObject>

MyWidget::MyWidget ( QWidget *parent) : QWidget(parent) {
  rbutton1 = new QRadioButton ("Radio 1");
  rbutton2 = new QRadioButton ("Radio 2");
  rbutton3 = new QRadioButton ("Radio 3");
  rbutton4 = new QRadioButton ("Radio 1a");
  rbutton5 = new QRadioButton ("Radio 2a");
  rbutton6 = new QRadioButton ("Radio 3a");

  rbutton1->setChecked(true);
  rbutton4->setChecked(true);

  groupBox1 = new QGroupBox("Radio Auswahl &1");
  groupBox2 = new QGroupBox("Radio Auswahl &2");

  groupBox2->setCheckable(true);
  groupBox2->setChecked(false);
  groupBox1->setAlignment ( Qt::AlignHCenter );
  groupBox2->setAlignment ( Qt::AlignHCenter );

  vBox1 = new QVBoxLayout;
  vBox2 = new QVBoxLayout;

  vBox1->addWidget(rbutton1);
  vBox1->addWidget(rbutton2);
  vBox1->addWidget(rbutton3);

  vBox2->addWidget(rbutton4);
  vBox2->addWidget(rbutton5);
  vBox2->addWidget(rbutton6);

  vBox1->addStretch(1);
  vBox2->addStretch(1);

  groupBox1->setLayout(vBox1);
  groupBox2->setLayout(vBox2);

  QVBoxLayout *layout = new QVBoxLayout;
  layout->addWidget(groupBox1);
  layout->addWidget(groupBox2);
  setLayout(layout);
  setWindowTitle("QGroupBox - demo");

  QObject::connect(rbutton2, SIGNAL( clicked() ), this, SLOT( setMsg() ));

}

void MyWidget::setMsg(bool status) {
  QMessageBox msg(QMessageBox::Warning, "Echt?", "ohne scheiss?", QMessageBox::Yes | QMessageBox::No);
  msg.exec();

}
Ich will, dass wenn der rbutton2 gedrückt / selektiert wird, automatisch eine Textbox erscheint. Jedoch passiert bei mir garnichts. Kompilieren tut es aber reibungslos,

Wäre ganz toll wenn jemand mich korrigieren könnte!

Gruss

lonely buffalo ;)

Verfasst: 9. Januar 2008 16:13
von bueffel2
hae? so gehts:

Code: Alles auswählen

#include "mywidget.h"
#include <QApplication>
#include <QMessageBox>
#include <QObject>
#include <iostream.h>

MyWidget::MyWidget ( QWidget *parent) : QWidget(parent) {
  rbutton1 = new QRadioButton ("Radio 1");
  rbutton2 = new QRadioButton ("Radio 2");
  rbutton3 = new QRadioButton ("Radio 3");
  rbutton4 = new QRadioButton ("Radio 1a");
  rbutton5 = new QRadioButton ("Radio 2a");
  rbutton6 = new QRadioButton ("Radio 3a");

  rbutton1->setChecked(true);
  rbutton4->setChecked(true);

  groupBox1 = new QGroupBox("Radio Auswahl &1");
  groupBox2 = new QGroupBox("Radio Auswahl &2");

  groupBox2->setCheckable(true);
  groupBox2->setChecked(false);
  groupBox1->setAlignment ( Qt::AlignHCenter );
  groupBox2->setAlignment ( Qt::AlignHCenter );

  vBox1 = new QVBoxLayout;
  vBox2 = new QVBoxLayout;

  vBox1->addWidget(rbutton1);
  vBox1->addWidget(rbutton2);
  vBox1->addWidget(rbutton3);

  vBox2->addWidget(rbutton4);
  vBox2->addWidget(rbutton5);
  vBox2->addWidget(rbutton6);

  vBox1->addStretch(1);
  vBox2->addStretch(1);

  groupBox1->setLayout(vBox1);
  groupBox2->setLayout(vBox2);

  QVBoxLayout *layout = new QVBoxLayout;
  layout->addWidget(groupBox1);
  layout->addWidget(groupBox2);
  setLayout(layout);
  setWindowTitle("QGroupBox - demo");

  QObject::connect(rbutton2, SIGNAL( clicked(bool) ), this, SLOT( setMsg(bool) ));

}

void MyWidget::setMsg(bool status) {
  QMessageBox msg(QMessageBox::Warning, "Echt?", "Alder dei mama, willst echt???", QMessageBox::Yes | QMessageBox::No);
  msg.exec();
  //cout << "hi";

}


komisch naja hauda rein

Verfasst: 9. Januar 2008 17:07
von Christian81
In der Konsole (Forum Suche gibt es ja hier anscheinend nicht... ) hätte dir Qt auch gesagt dass es clicked() als Signal nicht gibt.