QPushButton erweitern
Verfasst: 23. September 2006 11:35
Hallo,
ich benötige für ein ein Projekt einen QPushButton mit Sondereigenschaft. Das Button soll selbst noch eine ID haben, die bei dem clicked-SIGNAL mit zurückgeliefert werden soll um so in der Ergeignisbehandlung feststellen zu können, von welchem den der Buttons das Signal kam. Dazu haben ich folgendes probiert:
mydialog.h
mybutton.cpp
Um die Sache zu testen:
Leider geht es nicht das der Button beim Click seine ID ausgibt. Die Sachen aus der iostream werden wieder entfernt. Ich will nur erstmal einen Button mit dieser Funktion hinbekommen.
Hat jemand Vorschläge zur Lösung?
ich benötige für ein ein Projekt einen QPushButton mit Sondereigenschaft. Das Button soll selbst noch eine ID haben, die bei dem clicked-SIGNAL mit zurückgeliefert werden soll um so in der Ergeignisbehandlung feststellen zu können, von welchem den der Buttons das Signal kam. Dazu haben ich folgendes probiert:
mydialog.h
Code: Alles auswählen
#ifndef MYBUTTON_H
#define MYBUTTON_H
#include <QPushButton>
class MyButton : public QPushButton{
Q_OBJECT
public:
MyButton(unsigned int cn, QWidget *parent = 0);
signals:
void clicked(unsigned int);
public slots:
void click();
private:
unsigned int id;
};
#endif
Code: Alles auswählen
#include "mybutton.h"
#include <QPushButton>
#include <iostream>
MyButton::MyButton(unsigned int cn, QWidget *parent): QPushButton(parent){
id = cn;
setText(QString::number(id));
}
void MyButton::click(){
std::cout << id << std::endl;
emit clicked(id);
}
Code: Alles auswählen
#include "testdialog.h"
#include "mybutton.h"
#include <QApplication>
#include <QDialog>
#include <QPushButton>
#include <QGridLayout>
#include <iostream>
TestDialog::TestDialog(QWidget *parent):QDialog (parent) {
QGridLayout *layout = new QGridLayout(this);
unsigned int row = 0;
unsigned int col = 0;
ButtonArray = new (MyButton*[15]);
for (unsigned int i = 0; i < 16; i ++) {
ButtonArray[i] = new MyButton(i, this);
layout->addWidget(ButtonArray[i], row, col);
QObject::connect(ButtonArray[i], SIGNAL(clicked(unsigned int)), this, SLOT(out(unsigned int)));
col++;
if (col == 5) {
col = 0;
row++;
}
}
ButtonClose = new QPushButton ("Close", this);
layout->addWidget(ButtonClose, row, col);
QObject::connect(ButtonClose, SIGNAL (clicked()), qApp, SLOT(quit()));
}
void TestDialog::out(unsigned int i){
std::cout << "clicked: id = "<< i << std::endl;
}
Leider geht es nicht das der Button beim Click seine ID ausgibt. Die Sachen aus der iostream werden wieder entfernt. Ich will nur erstmal einen Button mit dieser Funktion hinbekommen.
Hat jemand Vorschläge zur Lösung?